Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Jul 2002 19:15:02 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        Daniel Eischen <eischen@pcnet1.pcnet.com>
Cc:        "Andrey A. Chernov" <ache@nagual.pp.ru>, NAKAJI Hiroyuki <nakaji@boggy.acest.tutrp.tut.ac.jp>, freebsd-current@FreeBSD.ORG
Subject:   Re: Post-KSE disaster with libc_r
Message-ID:  <Pine.BSF.4.21.0207011853400.91887-100000@InterJet.elischer.org>
In-Reply-To: <Pine.GSO.4.10.10207012123460.4178-100000@pcnet1.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0207011853400.91887-100000>