Subject: kern/37589: "panic: stack overflow detected; terminated" during boot with SSP
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <adam.hoka@gmail.com>
List: netbsd-bugs
Date: 12/21/2007 16:55:01
>Number:         37589
>Category:       kern
>Synopsis:       "panic: stack overflow detected; terminated" during boot with SSP
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 21 16:55:01 +0000 2007
>Originator:     Adam Hoka
>Release:        
>Organization:
>Environment:
NetBSD grimnismal 4.99.42 NetBSD 4.99.42 (GENERIC) #0: Sat Dec 15 04:57:30 PST 2007  builds@wb39:/home/builds/ab/HEAD/i386/200712150002Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/GENERIC i386

>Description:
I had the following problem with NetBSD 4.99.42 with enabled stack smashing protection:

wd0 at atabus0 drive 0: <Maxtor 6E040L0>
wd0: 39205 MB, 79656 cyl, 16 head, 63 sec, 512 bytes/sect x 80293248 sectors
Kernelized RAIDframe activated
pad0: outputs: 44100Hz, 16-bit, stereo
audio1 at pad0: half duplex
panic: stack overflow detected; terminated
Stopped in pid 0.16 (system) at netbsd:breakpoint+0x1:  ret
db> tr
breakpoint(c0982ef4,0,cb0f9c0c,c02ebf22,0) at netbsd:breakpoint+0x1
__stack_chk_fail(0,18,cb0f9afa,64,0) at netbsd:__stack_chk_fail+0x12
wdc_drvprobe(c16062e0,0,0,0,0) at netbsd:wdc_drvprobe+0x692
atabus_thread(c1605c80,0,c01002bd,0,c01002bd) at netbsd:atabus_thread+0x55


(gdb) l *wdc_drvprobe+0x692
0xc02ebf22 is in wdc_drvprobe (/var/tnf/src/sys/dev/ic/wdc.c:444).
439                                     s = splbio();
440                                     chp->ch_drive[i].drive_flags &= ~DRIVE_OLD;
441                                     splx(s);
442                                     continue;
443                             }
444                             bus_space_write_1(wdr->cmd_iot,
445                                 wdr->cmd_iohs[wd_command], 0, WDCC_RECAL);
446                             delay(10);      /* 400ns delay */
447                             if (wdc_wait_for_ready(chp, 10000, 0) == WDCWAIT_TOUT) {
448                                     ATADEBUG_PRINT(("%s:%d:%d: WDCC_RECAL failed\n",
>How-To-Repeat:
Compile and boot the GENERIC kernel with "USE_SSP=yes" in /etc/mk.conf.
>Fix: