Re: pg_ctl -o option dumps core when processing postmaster arguments...
Uh, this patch is strange:
-#define WHITESPACE "\f\n\r\t\v" /* as defined by isspace() */
+#define WHITESPACE "\f\n\r\t\v\0" /* as defined by isspace() */
They are processed the same by the backend because every string has a
trailing null. I think there must be some other bug that this covers
up.
---------------------------------------------------------------------------
Sean Chittenden wrote:
The attached space adds '\0' as a whitespace character and prevents
pg_ctl from running out of bounds when processing arguments for -o. I
don't think this ever worked, at least on Mac, but I suspect every
platform suffered from this bug.% gdb ./bin/pg_ctl
GNU gdb 5.3-20030128 (Apple version gdb-309) (Thu Dec 4 15:41:30 GMT
2003)
This GDB was configured as "powerpc-apple-darwin".
Reading symbols for shared libraries ........ done
(gdb) set arg -w -o -F start
(gdb) run
Starting program: /usr/local/pgsql/bin/pg_ctl -w -o -F start
Reading symbols for shared libraries ++.. done
waiting for postmaster to start...
Program received signal EXC_BAD_ACCESS, Could not access memory.
test_postmaster_connection () at pg_ctl.c:363
363 p++;
(gdb) bt
#0 test_postmaster_connection () at pg_ctl.c:363
#1 0x00003594 in do_start () at pg_ctl.c:539
#2 0x00003594 in do_start () at pg_ctl.c:539
#3 0x00004874 in main (argc=-1610604968, argv=0x0) at pg_ctl.c:1360
(gdb) p *p
$1 = 0 '\0'-sc
[ Attachment, skipping... ]
--
Sean Chittenden
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Import Notes
Reply to msg id not found: 7D992B00-E0BB-11D8-9BDD-000A95C705DC@chittenden.org
[ CC to patches.]
Yep, that is a bug. Patch attached and applied.
---------------------------------------------------------------------------
Sean Chittenden wrote:
Uh, this patch is strange:
-#define WHITESPACE "\f\n\r\t\v" /* as defined by isspace() */ +#define WHITESPACE "\f\n\r\t\v\0" /* as defined by isspace() */They are processed the same by the backend because every string has a
trailing null. I think there must be some other bug that this covers
up.I was thinking that OS-X had its own implementation of isspace() that
didn't check '\0', but I have no clue what exactly the problem is
beyond that. All I know is that on line 362 of
src/bin/pg_ctl/pg_ctl.h, I'm going *way* past the end post_opts in
test_postmaster_connection(). I stepped through things, and isspace()
wasn't stopping on '\0' and kept processing some 2M worth of address
space before it died in some other chunk of code. Like I said, FYI.361 /* Advance to next whitespace */
362 while (!isspace(*p))
363 p++;I'd send this to -bugs, but I'm trying to figure out why my ISP is now
in SpamHaus. I'm pretty sure it's because they acquired another
company a few months ago and ARIN just processed the change of
ownership for the IP block. RBLs are horrible. -scThe attached space adds '\0' as a whitespace character and prevents
pg_ctl from running out of bounds when processing arguments for -o. I
don't think this ever worked, at least on Mac, but I suspect every
platform suffered from this bug.% gdb ./bin/pg_ctl
GNU gdb 5.3-20030128 (Apple version gdb-309) (Thu Dec 4 15:41:30 GMT
2003)
This GDB was configured as "powerpc-apple-darwin".
Reading symbols for shared libraries ........ done
(gdb) set arg -w -o -F start
(gdb) run
Starting program: /usr/local/pgsql/bin/pg_ctl -w -o -F start
Reading symbols for shared libraries ++.. done
waiting for postmaster to start...
Program received signal EXC_BAD_ACCESS, Could not access memory.
test_postmaster_connection () at pg_ctl.c:363
363 p++;
(gdb) bt
#0 test_postmaster_connection () at pg_ctl.c:363
#1 0x00003594 in do_start () at pg_ctl.c:539
#2 0x00003594 in do_start () at pg_ctl.c:539
#3 0x00004874 in main (argc=-1610604968, argv=0x0) at pg_ctl.c:1360
(gdb) p *p
$1 = 0 '\0'-sc
[ Attachment, skipping... ]
--
Sean Chittenden-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073--
Sean Chittenden
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Attachments:
/bjm/difftext/plainDownload+2-2
Import Notes
Reply to msg id not found: 9CF47958-E137-11D8-8F43-000A95C705DC@chittenden.org | Resolved by subject fallback