I think that gets us a LOT closer!

Total tests 212, passed 212, failed 0
ref4# Jul  2 01:52:52 ref4 kernel: pid 330 (guard_b), uid 0: exited on
signal 11 (core dumped)
Jul  2 01:52:52 ref4 kernel: pid 334 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:52 ref4 kernel: pid 338 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:52 ref4 kernel: pid 342 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:52 ref4 kernel: pid 346 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:52 ref4 kernel: pid 350 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 354 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 358 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 362 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 366 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 370 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 374 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 378 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:53 ref4 kernel: pid 382 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:54 ref4 kernel: pid 386 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:54 ref4 kernel: pid 390 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:54 ref4 kernel: pid 394 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:54 ref4 kernel: pid 398 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:54 ref4 kernel: pid 402 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 406 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 410 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 414 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 418 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 422 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 426 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 430 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:55 ref4 kernel: pid 434 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:56 ref4 kernel: pid 438 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:56 ref4 kernel: pid 442 (guard_b), uid 0: exited on signal 11
(core dumped)
Jul  2 01:52:56 ref4 kernel: pid 446 (guard_b), uid 0: exited on signal 11
(core dumped)

--------------------------------------------------------------------------
sigsuspend_d                                0.00     0.01    0.01        
 passed                                 
--------------------------------------------------------------------------
sigwait_d                                   0.00     0.01    0.01        
 *** FAILED ***                         
--------------------------------------------------------------------------
guard_s.pl                                  0.06     0.88    0.95        
 *** FAILED *** (30/30 failed)          
--------------------------------------------------------------------------
propagate_s.pl                              0.14     0.07    0.21        
 *** FAILED *** (1/1 failed)            
--------------------------------------------------------------------------
Totals                                      3.34   151.65  154.99     0.00
 6 / 9 passed (66.67%)                      0.00     0.00    0.00    0.00%
--------------------------------------------------------------------------
*** Error code 1

Stop in /usr/src/lib/libc_r/test.
in gdb:
Breakpoint 1, main (argc=3, argv=0xbfbffc10) at guard_b.c:103
103             assert(pthread_attr_init(&attr) == 0);
(gdb) s
98              fprintf(stderr, "Test begin\n");
(gdb) 
Test begin
100             stacksize = strtoul(argv[1], NULL, 10);
(gdb) 
101             guardsize = strtoul(argv[2], NULL, 10);
(gdb) 
103             assert(pthread_attr_init(&attr) == 0);
(gdb) 
108             assert(pthread_attr_getstacksize(&attr, &def_stacksize) ==
0);
(gdb) 
109             assert(pthread_attr_getguardsize(&attr, &def_guardsize) ==
0);
(gdb) 
110             if (def_stacksize != stacksize) {
(gdb) 
111                     assert(pthread_attr_setstacksize(&attr,
stacksize) == 0);
(gdb) 
112                     assert(pthread_attr_getstacksize(&attr,
&def_stacksize) == 0);
(gdb) 
113                     assert(def_stacksize == stacksize);
(gdb) 
115             if (def_guardsize != guardsize) {
(gdb) 
116                     assert(pthread_attr_setguardsize(&attr,
guardsize) == 0);
(gdb) 
117                     assert(pthread_attr_getguardsize(&attr,
&def_guardsize) == 0);
(gdb) 
118                     assert(def_guardsize >= guardsize);
(gdb) 
127             args.top = NULL;
(gdb) 
128             args.cur = 0;
(gdb) 
129             args.max = (stacksize / FRAME_SIZE) - 1;
(gdb) 
130             fprintf(stderr, "No overflow:\n");
(gdb) 
No overflow:
131             assert(pthread_create(&thread, &attr, recurse, &args) ==
0);
(gdb) 
warning: Cannot insert breakpoint 0:
Error accessing memory address 0xd0d0d0d0: Bad address.
(gdb) bt
#0  0x0804b820 in _thread_kern_scheduler ()
#1  0x0804f9eb in _write ()
#2  0x08059cd1 in __swrite ()
#3  0x08059ddc in _swrite ()
#4  0x0805964b in __sflush ()
#5  0x080595e1 in __fflush ()
#6  0x08053394 in snprintf ()
#7  0x08053767 in __vfprintf ()
#8  0x08075080 in ?? ()
(gdb) 


hmmm recompile with -g and statically link with -g'd libc_r....
try again..
get to:

    at /usr/src/lib/libc_r/uthread/uthread_mutex.c:498
498                     if (((*mutex)->m_flags & MUTEX_FLAGS_INITED) ==
0) {
(gdb) 
505                     switch ((*mutex)->m_protocol) {
(gdb) 
508                             if ((*mutex)->m_owner == NULL) {
(gdb) 
510                                     (*mutex)->m_owner = curthread;
(gdb) 
513                                     _MUTEX_ASSERT_NOT_OWNED(*mutex);
(gdb) 
632                                         (*mutex), m_qe);
(gdb) 

682                     if (curthread->interrupted != 0)
(gdb) 
686                     _SPINUNLOCK(&(*mutex)->lock);
(gdb) 
692                     _thread_kern_sig_undefer();
(gdb) 
_thread_kern_sig_undefer () at
/usr/src/lib/libc_r/uthread/uthread_kern.c:1042
1042            struct pthread  *curthread = _get_curthread();
(gdb) 
_get_curthread () at /usr/src/lib/libc_r/uthread/uthread_kern.c:1129
1129            if (_thread_initial == NULL)
(gdb) 
1132            return (_thread_run);
(gdb) 
1133    }
(gdb) 
_thread_kern_sig_undefer () at
/usr/src/lib/libc_r/uthread/uthread_kern.c:1048
1048            if (curthread->sig_defer_count > 1) {
(gdb) 
1052            else if (curthread->sig_defer_count == 1) {
(gdb) 
1054                    curthread->sig_defer_count = 0;
(gdb) 
1059                    if (_sigq_check_reqd != 0)
(gdb) 
1066                    if (((curthread->cancelflags &
PTHREAD_AT_CANCEL_POINT) == 0) &&
(gdb) 
1076                    if ((curthread->yield_on_sig_undefer != 0) ||
(gdb) 
168     {
(gdb) 
171             for (i = 0; i < _SIG_WORDS; i++) {
(gdb) 
172                     if (set->__bits[i])
(gdb) 
171             for (i = 0; i < _SIG_WORDS; i++) {
(gdb) 
172                     if (set->__bits[i])
(gdb) 
171             for (i = 0; i < _SIG_WORDS; i++) {
(gdb) 
172                     if (set->__bits[i])
(gdb) 
171             for (i = 0; i < _SIG_WORDS; i++) {
(gdb) 
172                     if (set->__bits[i])
(gdb) 
171             for (i = 0; i < _SIG_WORDS; i++) {
(gdb) 
174             }
(gdb) 
168     {
(gdb) 
1082    }
(gdb) 
mutex_lock_common (mutex=0x8060c74)
    at /usr/src/lib/libc_r/uthread/uthread_mutex.c:693
693             } while (((*mutex)->m_owner != curthread) && (ret == 0) &&
(gdb) 
696             if (curthread->interrupted != 0 &&
(gdb) 
702     }
(gdb) 
__pthread_mutex_lock (mutex=0x8060c74)
    at /usr/src/lib/libc_r/uthread/uthread_mutex.c:723
723     }
(gdb) 




hangs..

on console:
lock order reversal
 1st 0xc03585e0 sched lock (sched lock) @ ../../../kern/subr_trap.c:82
 2nd 0xc03c2d80 sio (sio) @ ../../../dev/sio/sio.c:3198
failed to set signal flags proprly for ast()
failed to set signal flags proprly for ast()
failed to set signal flags proprly for ast()
failed to set signal flags proprly for ast()
failed to set signal flags proprly for ast()
failed to set signal flags proprly for ast()
failed to set signal flags proprly for ast()


probably due to debugging..

will try again with a breakpoint..



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to