On Wed, 10 Jun 2009, Howard Chu wrote:
Please try updated HEAD.
A test054 slapd livelocked:
t@1 a l@1 ?() running in __lwp_wait()
t@2 a l@2 slapd_daemon_task() running in _poll() t@3 a l@3 ldap_int_thread_pool_wrapper() sleep on 0x3fe4a8 in __lwp_park() t@4 a l@4 ldap_int_thread_pool_wrapper() sleep on 0x3fe4a8 in __lwp_park() t@5 a l@5 ldap_int_thread_pool_wrapper() running in lwp_yield() t@6 a l@6 ldap_int_thread_pool_wrapper() sleep on 0x3fe4a8 in __lwp_park() t@1 (l@1) stopped in __lwp_wait at 0xff31ff64 0xff31ff64: __lwp_wait+0x0004: ta %icc,0x00000008 current thread: t@1 [1] __lwp_wait(0x2, 0xffbff554, 0xff18fb04, 0xff1424fc, 0x1, 0xffbff51c), at 0xff31ff64 [2] lwp_wait(0x2, 0xffbff554, 0x2d388, 0xff1849e8, 0x5, 0xffbff54c), at 0xff14d1cc [3] _thrp_join(0x2, 0x0, 0x0, 0x1, 0x81010100, 0xff00), at 0xff1490c4 =>[4] ldap_pvt_thread_join(thread = 2U, thread_return = (nil)), line 197 in "thr_posix.c" [5] slapd_daemon(), line 2700 in "daemon.c" [6] main(argc = 8, argv = 0xffbff774), line 950 in "main.c" Current function is slapd_daemon_task 2325 SLAP_EVENT_WAIT( tvp, &ns ); t@2 (l@2) stopped in _poll at 0xff31e238 0xff31e238: _poll+0x0004: ta %icc,0x00000008 current thread: t@2 [1] _poll(0xfe3fbb90, 0x4, 0xffffffffffffffff, 0xfffffffffffffff8, 0x0, 0xfe3fbd99), at 0xff31e238 [2] select_large_fdset(0x12, 0x20, 0xfe3fbd98, 0x0, 0xfe3fbd98, 0xfe3fbd98), at 0xff2d2b6c =>[3] slapd_daemon_task(ptr = (nil)), line 2325 in "daemon.c" Current function is ldap_pvt_thread_cond_wait 277 return ERRVAL( pthread_cond_wait( cond, mutex ) ); t@3 (l@3) stopped in __lwp_park at 0xff1554b0 0xff1554b0: __lwp_park+0x0010: ta %icc,0x00000008 current thread: t@3 [1] __lwp_park(0x0, 0x0, 0x0, 0x1, 0xff168000, 0x0), at 0xff1554b0 [2] cond_wait_queue(0x3fe4a8, 0xff168c08, 0x0, 0x0, 0xff070400, 0xff168000), at 0xff1526b8 [3] _cond_wait_cancel(0x3fe4a8, 0x3fe490, 0xfdbffc98, 0x1, 0x3, 0x0), at 0xff152e74 [4] _pthread_cond_wait(0x3fe4a8, 0x3fe490, 0xfdbffe0c, 0x1, 0x0, 0xfdbffd81), at 0xff152eb0 =>[5] ldap_pvt_thread_cond_wait(cond = 0x3fe4a8, mutex = 0x3fe490), line 277 in "thr_posix.c" [6] ldap_int_thread_pool_wrapper(xpool = 0x3fe488), line 689 in "tpool.c" Current function is ldap_pvt_thread_cond_wait 277 return ERRVAL( pthread_cond_wait( cond, mutex ) ); t@4 (l@4) stopped in __lwp_park at 0xff1554b0 0xff1554b0: __lwp_park+0x0010: ta %icc,0x00000008 current thread: t@4 [1] __lwp_park(0x0, 0x0, 0x0, 0x1, 0xff168000, 0x0), at 0xff1554b0 [2] cond_wait_queue(0x3fe4a8, 0xff168c08, 0x0, 0x0, 0xff070600, 0xff168000), at 0xff1526b8 [3] _cond_wait_cancel(0x3fe4a8, 0x3fe490, 0x0, 0xff168000, 0x3, 0x0), at 0xff152e74 [4] _pthread_cond_wait(0x3fe4a8, 0x3fe490, 0xfd3ffe0c, 0x1, 0x0, 0xfd3ffd81), at 0xff152eb0 =>[5] ldap_pvt_thread_cond_wait(cond = 0x3fe4a8, mutex = 0x3fe490), line 277 in "thr_posix.c" [6] ldap_int_thread_pool_wrapper(xpool = 0x3fe488), line 689 in "tpool.c" Current function is ldap_pvt_thread_yield 228 thr_yield(); t@5 (l@5) stopped in lwp_yield at 0xff15556c 0xff15556c: lwp_yield+0x0008: retl current thread: t@5 [1] lwp_yield(0x0, 0x0, 0xff070800, 0x0, 0x0, 0x0), at 0xff15556c =>[2] ldap_pvt_thread_yield(), line 228 in "thr_posix.c" [3] syncprov_op_mod(op = 0x52c508, rs = 0xfcbffcac), line 1964 in "syncprov.c" [4] overlay_op_walk(op = 0x52c508, rs = 0xfcbffcac, which = op_add, oi = 0x4326c8, on = 0x4327d0), line 659 in "backover.c" [5] over_op_func(op = 0x52c508, rs = 0xfcbffcac, which = op_add), line 721 in "backover.c" [6] over_op_add(op = 0x52c508, rs = 0xfcbffcac), line 767 in "backover.c" [7] fe_op_add(op = 0x52c508, rs = 0xfcbffcac), line 334 in "add.c" [8] do_add(op = 0x52c508, rs = 0xfcbffcac), line 194 in "add.c" [9] connection_operation(ctx = 0xfcbffe0c, arg_v = 0x52c508), line 1115 in "connection.c" [10] connection_read_thread(ctx = 0xfcbffe0c, argv = 0x11), line 1248 in "connection.c" [11] ldap_int_thread_pool_wrapper(xpool = 0x3fe488), line 698 in "tpool.c" Current function is ldap_pvt_thread_cond_wait 277 return ERRVAL( pthread_cond_wait( cond, mutex ) ); t@6 (l@6) stopped in __lwp_park at 0xff1554b0 0xff1554b0: __lwp_park+0x0010: ta %icc,0x00000008 current thread: t@6 [1] __lwp_park(0x0, 0x0, 0x0, 0x1, 0xff168000, 0x0), at 0xff1554b0 [2] cond_wait_queue(0x3fe4a8, 0xff168c08, 0x0, 0x0, 0xff070a00, 0xff168000), at 0xff1526b8 [3] _cond_wait_cancel(0x3fe4a8, 0x3fe490, 0xfc3ffc98, 0x1, 0x3, 0x0), at 0xff152e74 [4] _pthread_cond_wait(0x3fe4a8, 0x3fe490, 0xfc3ffe0c, 0x1, 0x0, 0xfc3ffd81), at 0xff152eb0 =>[5] ldap_pvt_thread_cond_wait(cond = 0x3fe4a8, mutex = 0x3fe490), line 277 in "thr_posix.c" [6] ldap_int_thread_pool_wrapper(xpool = 0x3fe488), line 689 in "tpool.c"