You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Philip M. Gollucci" <pg...@p6m7g8.com> on 2006/07/03 05:27:57 UTC

gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+

Hi,

2 years ago, PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/68727
was filed about gdb itself segfaulting when trying to debug httpd.
This PR hasn't seen any action AFAIK.

This has been slowly driving me mad as you can not debug any httpd startup code.
Which coincidentally also prevents you from debugging mod_perl startup code and most likely
mod_* (php,ruby,tcl,java,python)

I did some painstakingly slow "stepping" through httpd code today:

Basically after apr_dso_load() calls dlopen()  (OS level Freebsd version) the
SECOND time through (httpd parses the config twice)
The first LoadModule line (doesn't matter which) crashes gdb.

I can reliably reproduce this on _ALL_ versions of FreeBSD from 5.2 through 6.1-STABLE and on -CURRENT.
and ALL versions of httpd 2.0.48+ or 2.2.x

Attached is the information I was able to collect, but at this point, I'm in WAY over my head.

[Apologies for the cross post, feel free to spam me in return]

gdb -v
GNU gdb 6.1.1 [FreeBSD]

gcc -v
gcc version 3.4.4 [FreeBSD] 20050518

I've also seen it on EVERY version of gdb in the ports tree combined with any version of gcc in the ports tree.
/usr/local/bin/gcc32
/usr/local/bin/gcc33
/usr/local/bin/gcc34
/usr/local/bin/gcc40
/usr/local/bin/gcc41
/usr/local/bin/gcc42

------------------------------------------------------------------------
Philip M. Gollucci (pgollucci@p6m7g8.com) 323.219.4708
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F  6A47 D55A 7172 A799 97F

"In all that I've done wrong I know I must have done something right to
deserve a hug every morning and butterfly kisses at night."

Re: gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+

Posted by "Philip M. Gollucci" <pg...@p6m7g8.com>.
Paul Querna wrote:
> Can you try to get this into a simple test case? Calling apr_dso_load twice?
I didn't seem to be able to cause it in a simple case; any great ideas ?

gcc -g -O0 \
	-I/usr/local/software/freebsd-6.1-stable/3.4.4/apr/trunk/include/apr-1 \
	-L/usr/local/software/freebsd-6.1-stable/3.4.4/apr/trunk/lib -l apr-1 \
	gdb.c -o test
./test

pgollucci@home.p6m7g8.net /home/pgollucci 145 0>gdb ./test
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
(gdb) r
Starting program: /usr/home/pgollucci/test
warning: Unable to get location for thread creation breakpoint: generic error
[New LWP 100062]
[New Thread 0x8053000 (LWP 100062)]

Program exited normally.
(gdb)

------------------------------------------------------------------------
Philip M. Gollucci (pgollucci@p6m7g8.com) 323.219.4708
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F  6A47 D55A 7172 A799 97F

"In all that I've done wrong I know I must have done something right to
deserve a hug every morning and butterfly kisses at night."

Re: gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+ [SOLVED]

Posted by "Philip M. Gollucci" <pg...@p6m7g8.com>.
Paul Querna wrote:
> Philip M. Gollucci wrote:
>> Hi,
>>
>> 2 years ago, PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/68727
>> was filed about gdb itself segfaulting when trying to debug httpd.
>> This PR hasn't seen any action AFAIK.
Its been 2 years in the making........

GDB 6.5 works flawlessly with no local mods.

I used the attached script to test with
against perl 5.8.8 httpd 2.2.2(prefork) mod_perl trunk

I'm going to work on creating
	ports/devel/gdb65
	src/contrib/gdb (vendor import)

pgollucci@home.p6m7g8.net /home/pgollucci/dev/compile/freebsd-6.1-stable/3.4.4/mod_perl/r420729-5.8.8-2.0.58-prefork 22
                           5 0>./t/TEST -debug=gdb
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd6.1"...
[Mon Jul 10 22:19:41 2006] [info] 6 Apache2:: modules loaded
[Mon Jul 10 22:19:41 2006] [info] 0 APR:: modules loaded
[Mon Jul 10 22:19:41 2006] [info] base server + 30 vhosts ready to run tests
[Mon Jul 10 22:19:43 2006] [warn] The Alias directive in mod_perl at line 1 will probably never match because it overla
                           ps an earlier Alias.
[Mon Jul 10 22:19:43 2006] [warn] The Alias directive in mod_perl at line 1 will probably never match because it overla
                           ps an earlier Alias.


THIS IS HUGE!!!!




-- 
------------------------------------------------------------------------
Philip M. Gollucci (pgollucci@p6m7g8.com) 323.219.4708
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F  6A47 D55A 7172 A799 97F

"In all that I've done wrong I know I must have done something right to
deserve a hug every morning and butterfly kisses at night."

Re: gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+ [SOLVED]

Posted by "Philip M. Gollucci" <pg...@p6m7g8.com>.
Paul Querna wrote:
> Philip M. Gollucci wrote:
>> Hi,
>>
>> 2 years ago, PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/68727
>> was filed about gdb itself segfaulting when trying to debug httpd.
>> This PR hasn't seen any action AFAIK.
Its been 2 years in the making........

GDB 6.5 works flawlessly with no local mods.

I used the attached script to test with
against perl 5.8.8 httpd 2.2.2(prefork) mod_perl trunk

I'm going to work on creating
	ports/devel/gdb65
	src/contrib/gdb (vendor import)

pgollucci@home.p6m7g8.net /home/pgollucci/dev/compile/freebsd-6.1-stable/3.4.4/mod_perl/r420729-5.8.8-2.0.58-prefork 22
                           5 0>./t/TEST -debug=gdb
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd6.1"...
[Mon Jul 10 22:19:41 2006] [info] 6 Apache2:: modules loaded
[Mon Jul 10 22:19:41 2006] [info] 0 APR:: modules loaded
[Mon Jul 10 22:19:41 2006] [info] base server + 30 vhosts ready to run tests
[Mon Jul 10 22:19:43 2006] [warn] The Alias directive in mod_perl at line 1 will probably never match because it overla
                           ps an earlier Alias.
[Mon Jul 10 22:19:43 2006] [warn] The Alias directive in mod_perl at line 1 will probably never match because it overla
                           ps an earlier Alias.


THIS IS HUGE!!!!




-- 
------------------------------------------------------------------------
Philip M. Gollucci (pgollucci@p6m7g8.com) 323.219.4708
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F  6A47 D55A 7172 A799 97F

"In all that I've done wrong I know I must have done something right to
deserve a hug every morning and butterfly kisses at night."

Re: gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+

Posted by "Philip M. Gollucci" <pg...@p6m7g8.com>.
Paul Querna wrote:
> Can you try to get this into a simple test case? Calling apr_dso_load twice?
I didn't seem to be able to cause it in a simple case; any great ideas ?

gcc -g -O0 \
	-I/usr/local/software/freebsd-6.1-stable/3.4.4/apr/trunk/include/apr-1 \
	-L/usr/local/software/freebsd-6.1-stable/3.4.4/apr/trunk/lib -l apr-1 \
	gdb.c -o test
./test

pgollucci@home.p6m7g8.net /home/pgollucci 145 0>gdb ./test
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
(gdb) r
Starting program: /usr/home/pgollucci/test
warning: Unable to get location for thread creation breakpoint: generic error
[New LWP 100062]
[New Thread 0x8053000 (LWP 100062)]

Program exited normally.
(gdb)

------------------------------------------------------------------------
Philip M. Gollucci (pgollucci@p6m7g8.com) 323.219.4708
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F  6A47 D55A 7172 A799 97F

"In all that I've done wrong I know I must have done something right to
deserve a hug every morning and butterfly kisses at night."

Re: gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+

Posted by Paul Querna <ch...@force-elite.com>.
Philip M. Gollucci wrote:
> Hi,
> 
> 2 years ago, PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/68727
> was filed about gdb itself segfaulting when trying to debug httpd.
> This PR hasn't seen any action AFAIK.

This appears to be a duplicate of this one:
http://www.freebsd.org/cgi/query-pr.cgi?pr=gnu/73512

Again, no action, I can repo this 100% on my machines as well.

> (gdb) x flags
> 0x102:  Error accessing memory address 0x102: Bad address.

Can you try to get this into a simple test case? Calling apr_dso_load twice?

-Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Re: gdb in realloc(): error: junk pointer, too high to make sense on FreeBSD 5.2+

Posted by Paul Querna <ch...@force-elite.com>.
Philip M. Gollucci wrote:
> Hi,
> 
> 2 years ago, PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/68727
> was filed about gdb itself segfaulting when trying to debug httpd.
> This PR hasn't seen any action AFAIK.

This appears to be a duplicate of this one:
http://www.freebsd.org/cgi/query-pr.cgi?pr=gnu/73512

Again, no action, I can repo this 100% on my machines as well.

> (gdb) x flags
> 0x102:  Error accessing memory address 0x102: Bad address.

Can you try to get this into a simple test case? Calling apr_dso_load twice?

-Paul