Re: recent update breaks some ports
On Thu, Apr 12, 2012 at 01:39:28PM +0300, Konstantin Belousov wrote: > On Thu, Apr 12, 2012 at 09:12:50AM +0200, Stefan Farfeleder wrote: > > On Wed, Apr 11, 2012 at 11:27:55PM +0200, Stefan Farfeleder wrote: > > > On Wed, Apr 11, 2012 at 03:53:38PM +0300, Konstantin Belousov wrote: > > > > On Wed, Apr 11, 2012 at 01:34:01PM +0200, Stefan Farfeleder wrote: > > > > > On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > > > > > > > > > > > > I'm experiencing that too (r234038), xine also no longer starts > > > > > > (hangs > > > > > > at splash screen). > > > > > > > > > > FWIW backing out r233749 fixes evince and xine for me. > > > > Please recompile at least rtld/libc/libthr with debugging symbols and > > > > get > > > > a backtrace from the hung process. > > > > > > Attaching gdb to a hanging evince process yields this: > > [snip] > This is supposedly fixed by r234170. Thanks, works for me! ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: recent update breaks some ports
On Thu, Apr 12, 2012 at 09:12:50AM +0200, Stefan Farfeleder wrote: > On Wed, Apr 11, 2012 at 11:27:55PM +0200, Stefan Farfeleder wrote: > > On Wed, Apr 11, 2012 at 03:53:38PM +0300, Konstantin Belousov wrote: > > > On Wed, Apr 11, 2012 at 01:34:01PM +0200, Stefan Farfeleder wrote: > > > > On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > > > > > > > > > > I'm experiencing that too (r234038), xine also no longer starts (hangs > > > > > at splash screen). > > > > > > > > FWIW backing out r233749 fixes evince and xine for me. > > > Please recompile at least rtld/libc/libthr with debugging symbols and get > > > a backtrace from the hung process. > > > > Attaching gdb to a hanging evince process yields this: > > Sorry, I forgot that make install strips debug info. Here are the traces > with actual debug info: > > 0x000807f7c9ac in _umtx_op_err () at > /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 > 37 RSYSCALL_ERR(_umtx_op) > (gdb) bt > #0 0x000807f7c9ac in _umtx_op_err () at > /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 > #1 0x000807f72431 in __thr_rwlock_wrlock (rwlock=Variable "rwlock" is > not available. > ) at /usr/src/lib/libthr/thread/thr_umtx.c:296 > #2 0x000807f78473 in _thr_rtld_wlock_acquire (lock=0x808189b00) at > thr_umtx.h:194 > #3 0x0008006676a9 in wlock_acquire (lock=0x800877760, > lockstate=0x7f5fa570) > at /usr/src/libexec/rtld-elf/rtld_lock.c:213 > #4 0x000800664a6e in dlopen_object (name=0x80ac87632 "libsupc++.so.1", > fd=-1, refobj=0x8007e2400, lo_flags=0, > mode=1) at /usr/src/libexec/rtld-elf/rtld.c:2517 > #5 0x000800664e2c in load_filtee1 (obj=0x8007e2400, needed=0x8007e1b80, > flags=0) > at /usr/src/libexec/rtld-elf/rtld.c:1679 > #6 0x000800664e86 in load_filtees (obj=0x8007e2400, flags=0, > lockstate=Variable "lockstate" is not available. > ) > at /usr/src/libexec/rtld-elf/rtld.c:1692 > #7 0x0008006651bb in symlook_obj (req=0x7f5fa720, obj=0x8007e2400) > at /usr/src/libexec/rtld-elf/rtld.c:3421 > #8 0x000800665337 in symlook_list (req=0x7f5fa7a0, objlist=Variable > "objlist" is not available. > ) at /usr/src/libexec/rtld-elf/rtld.c:3335 > #9 0x000800665521 in symlook_global (req=0x7f5faaf0, > donelist=0x7f5faa90) > at /usr/src/libexec/rtld-elf/rtld.c:3247 > #10 0x0008006658ef in symlook_default (req=0x7f5faaf0, > refobj=0x8007e0c00) > at /usr/src/libexec/rtld-elf/rtld.c:3286 > #11 0x000800665bed in find_symdef (symnum=266, refobj=0x8007e0c00, > defobj_out=0x7f5fab90, flags=0, > cache=0x80079a000, lockstate=0x7f5fac30) at > /usr/src/libexec/rtld-elf/rtld.c:1416 > #12 0x00080066065b in reloc_non_plt (obj=0x8007e0c00, obj_rtld=Variable > "obj_rtld" is not available. > ) at /usr/src/libexec/rtld-elf/amd64/reloc.c:155 > #13 0x0008006634e7 in relocate_objects (first=Variable "first" is not > available. > ) at /usr/src/libexec/rtld-elf/rtld.c:2185 > #14 0x000800664c96 in dlopen_object (name=0x80a497100 > "/usr/local/lib/evince/3/backends/libpdfdocument.so", fd=Variable "fd" is not > available. > ) > at /usr/src/libexec/rtld-elf/rtld.c:2543 > #15 0x0008006657b4 in rtld_dlopen (name=0x80a497100 > "/usr/local/lib/evince/3/backends/libpdfdocument.so", fd=-1, > mode=258) at /usr/src/libexec/rtld-elf/rtld.c:2491 > #16 0x000806ba376b in g_module_open () from > /usr/local/lib/libgmodule-2.0.so.0 > #17 0x000800cb5097 in ev_module_get_path () from > /usr/local/lib/libevdocument.so.3 > #18 0x000806dd866c in g_type_module_use () from > /usr/local/lib/libgobject-2.0.so.0 > #19 0x000800cac949 in ev_backends_manager_get_document () from > /usr/local/lib/libevdocument.so.3 > #20 0x000800cb13f5 in ev_document_factory_add_filters () from > /usr/local/lib/libevdocument.so.3 > #21 0x000800cb15d4 in ev_document_factory_get_document () from > /usr/local/lib/libevdocument.so.3 > #22 0x000800ee77b9 in ev_job_load_new () from > /usr/local/lib/libevview.so.3 > #23 0x000800ee90f5 in ev_job_scheduler_push_job () from > /usr/local/lib/libevview.so.3 > #24 0x000807259274 in g_thread_create_full () from > /usr/local/lib/libglib-2.0.so.0 > #25 0x000807f70cdd in thread_start (curthread=0x808f1e400) at > /usr/src/lib/libthr/thread/thr_create.c:284 > #26 0x in ?? () > Error accessing memory address 0x7f5fb000: Bad address. > > and: > > 0x000802e3c9ac in _umtx_op_err () at > /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 > 37 RSYSCALL_ERR(_umtx_op) > (gdb) bt > #0 0x000802e3c9ac in _umtx_op_err () at > /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 > #1 0x000802e3262f in _thr_umtx_timedwait_uint (mtx=Variable "mtx" is not > available. > ) at /usr/src/lib/libthr/thread/thr_umtx.c:212 > #2 0x000802e3b09d in cond_wait_common (cond=Variable "cond" is not > available. > ) at /usr/src/lib/libthr/thread/thr_
Re: recent update breaks some ports
On Wed, Apr 11, 2012 at 11:27:55PM +0200, Stefan Farfeleder wrote: > On Wed, Apr 11, 2012 at 03:53:38PM +0300, Konstantin Belousov wrote: > > On Wed, Apr 11, 2012 at 01:34:01PM +0200, Stefan Farfeleder wrote: > > > On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > > > > > > > > I'm experiencing that too (r234038), xine also no longer starts (hangs > > > > at splash screen). > > > > > > FWIW backing out r233749 fixes evince and xine for me. > > Please recompile at least rtld/libc/libthr with debugging symbols and get > > a backtrace from the hung process. > > Attaching gdb to a hanging evince process yields this: Sorry, I forgot that make install strips debug info. Here are the traces with actual debug info: 0x000807f7c9ac in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 37 RSYSCALL_ERR(_umtx_op) (gdb) bt #0 0x000807f7c9ac in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 #1 0x000807f72431 in __thr_rwlock_wrlock (rwlock=Variable "rwlock" is not available. ) at /usr/src/lib/libthr/thread/thr_umtx.c:296 #2 0x000807f78473 in _thr_rtld_wlock_acquire (lock=0x808189b00) at thr_umtx.h:194 #3 0x0008006676a9 in wlock_acquire (lock=0x800877760, lockstate=0x7f5fa570) at /usr/src/libexec/rtld-elf/rtld_lock.c:213 #4 0x000800664a6e in dlopen_object (name=0x80ac87632 "libsupc++.so.1", fd=-1, refobj=0x8007e2400, lo_flags=0, mode=1) at /usr/src/libexec/rtld-elf/rtld.c:2517 #5 0x000800664e2c in load_filtee1 (obj=0x8007e2400, needed=0x8007e1b80, flags=0) at /usr/src/libexec/rtld-elf/rtld.c:1679 #6 0x000800664e86 in load_filtees (obj=0x8007e2400, flags=0, lockstate=Variable "lockstate" is not available. ) at /usr/src/libexec/rtld-elf/rtld.c:1692 #7 0x0008006651bb in symlook_obj (req=0x7f5fa720, obj=0x8007e2400) at /usr/src/libexec/rtld-elf/rtld.c:3421 #8 0x000800665337 in symlook_list (req=0x7f5fa7a0, objlist=Variable "objlist" is not available. ) at /usr/src/libexec/rtld-elf/rtld.c:3335 #9 0x000800665521 in symlook_global (req=0x7f5faaf0, donelist=0x7f5faa90) at /usr/src/libexec/rtld-elf/rtld.c:3247 #10 0x0008006658ef in symlook_default (req=0x7f5faaf0, refobj=0x8007e0c00) at /usr/src/libexec/rtld-elf/rtld.c:3286 #11 0x000800665bed in find_symdef (symnum=266, refobj=0x8007e0c00, defobj_out=0x7f5fab90, flags=0, cache=0x80079a000, lockstate=0x7f5fac30) at /usr/src/libexec/rtld-elf/rtld.c:1416 #12 0x00080066065b in reloc_non_plt (obj=0x8007e0c00, obj_rtld=Variable "obj_rtld" is not available. ) at /usr/src/libexec/rtld-elf/amd64/reloc.c:155 #13 0x0008006634e7 in relocate_objects (first=Variable "first" is not available. ) at /usr/src/libexec/rtld-elf/rtld.c:2185 #14 0x000800664c96 in dlopen_object (name=0x80a497100 "/usr/local/lib/evince/3/backends/libpdfdocument.so", fd=Variable "fd" is not available. ) at /usr/src/libexec/rtld-elf/rtld.c:2543 #15 0x0008006657b4 in rtld_dlopen (name=0x80a497100 "/usr/local/lib/evince/3/backends/libpdfdocument.so", fd=-1, mode=258) at /usr/src/libexec/rtld-elf/rtld.c:2491 #16 0x000806ba376b in g_module_open () from /usr/local/lib/libgmodule-2.0.so.0 #17 0x000800cb5097 in ev_module_get_path () from /usr/local/lib/libevdocument.so.3 #18 0x000806dd866c in g_type_module_use () from /usr/local/lib/libgobject-2.0.so.0 #19 0x000800cac949 in ev_backends_manager_get_document () from /usr/local/lib/libevdocument.so.3 #20 0x000800cb13f5 in ev_document_factory_add_filters () from /usr/local/lib/libevdocument.so.3 #21 0x000800cb15d4 in ev_document_factory_get_document () from /usr/local/lib/libevdocument.so.3 #22 0x000800ee77b9 in ev_job_load_new () from /usr/local/lib/libevview.so.3 #23 0x000800ee90f5 in ev_job_scheduler_push_job () from /usr/local/lib/libevview.so.3 #24 0x000807259274 in g_thread_create_full () from /usr/local/lib/libglib-2.0.so.0 #25 0x000807f70cdd in thread_start (curthread=0x808f1e400) at /usr/src/lib/libthr/thread/thr_create.c:284 #26 0x in ?? () Error accessing memory address 0x7f5fb000: Bad address. and: 0x000802e3c9ac in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 37 RSYSCALL_ERR(_umtx_op) (gdb) bt #0 0x000802e3c9ac in _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 #1 0x000802e3262f in _thr_umtx_timedwait_uint (mtx=Variable "mtx" is not available. ) at /usr/src/lib/libthr/thread/thr_umtx.c:212 #2 0x000802e3b09d in cond_wait_common (cond=Variable "cond" is not available. ) at /usr/src/lib/libthr/thread/thr_cond.c:243 #3 0x000800bfbf23 in metronom_sync_loop (this_gen=Variable "this_gen" is not available. ) at metronom.c:871 #4 0x000802e30cdd in thread_start (curthread=0x804c0b400) at /usr/src/lib/libthr/thread/thr_create.c:284 #5 0x in ?? () Error accessin
Re: Follow-up: Re: recent update breaks some ports
I'm glad to report that your patch fixes not only wlock-within-wlock cases but also rlock-within-wlock cases properly! On Wed, 11 Apr 2012 22:42:39 +0300 Konstantin Belousov wrote: > On Thu, Apr 12, 2012 at 04:04:11AM +0900, Taku YAMAMOTO wrote: (snip) > > The following is the first occurence of rlock-within-wlock incident. > > > > Hardware watchpoint 2: lock_place[0].count_rw > > > > Old value = 0 > > New value = 1 > > 0x28f526fd in _thr_rtld_rlock_acquire (lock=0x28f63600) > > at /usr/src/lib/libthr/thread/thr_rtld.c:133 > > 133 HANDLE_NESTED_ACQ(count_rw); > > (gdb) bt > > #0 0x28f526fd in _thr_rtld_rlock_acquire (lock=0x28f63600) > > at /usr/src/lib/libthr/thread/thr_rtld.c:133 > > #1 0x28071291 in rlock_acquire () from /libexec/ld-elf.so.1 > > #2 0x2806fccb in _rtld_bind () from /libexec/ld-elf.so.1 > > #3 0x28069dc9 in _rtld_bind_start () from /libexec/ld-elf.so.1 > > #4 0x290c3000 in ?? () > > #5 0x0148 in ?? () > > #6 0x29356318 in ?? () from /usr/lib/libsupc++.so.1 > > #7 0x28f503e0 in _thr_once_init () > >from /home/taku/work/build/biotite/usr/src/lib/libthr/libthr.so.3 > > #8 0x in ?? () > > #9 0x00200202 in ?? () > > #10 0x290c3000 in ?? () > > #11 0x0148 in ?? () > > #12 0x2935eae0 in __gxx_personality_v0 () from /usr/lib/libsupc++.so.1 > > #13 0x2935f5c5 in __cxa_get_globals () from /usr/lib/libsupc++.so.1 > > #14 0x290c2710 in ?? () > > #15 0xbfbfdc48 in ?? () > > #16 0x29356325 in ?? () from /usr/lib/libsupc++.so.1 > > #17 0x280714c9 in lock_release () from /libexec/ld-elf.so.1 > > Previous frame inner to this frame (corrupt stack?) > Unortunately, this trace is not usefule, it seems that you need > to recompile rtld/libc/libthr with debugging symbols to get the issue > fixed. I retook the latter execution path with debugging symbols, without your patch for the record. Hardware watchpoint 3: lock_place[0].count_rw Old value = 0 New value = 1 0x28f5275d in _thr_rtld_rlock_acquire (lock=0x28f63680) at /usr/src/lib/libthr/thread/thr_rtld.c:133 133 HANDLE_NESTED_ACQ(count_rw); (gdb) bt #0 0x28f5275d in _thr_rtld_rlock_acquire (lock=0x28f63680) at /usr/src/lib/libthr/thread/thr_rtld.c:133 #1 0x28071291 in rlock_acquire (lock=0x2807efbc, lockstate=0xbfbfdb70) at /usr/src/libexec/rtld-elf/rtld_lock.c:197 #2 0x2806fccb in _rtld_bind (obj=0x290c3000, reloff=328) at /usr/src/libexec/rtld-elf/rtld.c:642 #3 0x28069dc9 in _rtld_bind_start () at /usr/src/libexec/rtld-elf/i386/rtld_start.S:81 #4 0x290c3000 in ?? () #5 0x0148 in ?? () #6 0x29356318 in .rel.plt () from /home/taku/lib/debug/libsupc++.so.1 #7 0x in ?? () #8 0x00200206 in ?? () #9 0x290c3000 in ?? () #10 0x0148 in ?? () #11 0x2935eae0 in __static_initialization_and_destruction_0 (__initialize_p=Variable "__initialize_p" is not available. ) at gthr-default.h:188 #12 0x2935f5c5 in __cxa_get_globals () from /home/taku/lib/debug/libsupc++.so.1 #13 0x290c2710 in ?? () #14 0xbfbfdc48 in ?? () #15 0x29356325 in _init () from /home/taku/lib/debug/libsupc++.so.1 #16 0x280714c9 in lock_release (lock=0x280714c9, lockstate=0x2807d2a4) at /usr/src/libexec/rtld-elf/rtld_lock.c:219 Previous frame inner to this frame (corrupt stack?) (gdb) c Continuing. Hardware watchpoint 3: lock_place[0].count_rw Old value = 1 New value = 2 0x28f5275d in _thr_rtld_rlock_acquire (lock=0x28f63680) at /usr/src/lib/libthr/thread/thr_rtld.c:133 133 HANDLE_NESTED_ACQ(count_rw); (gdb) bt #0 0x28f5275d in _thr_rtld_rlock_acquire (lock=0x28f63680) at /usr/src/lib/libthr/thread/thr_rtld.c:133 #1 0x28071291 in rlock_acquire (lock=0x2807efbc, lockstate=0xbfbfdb70) at /usr/src/libexec/rtld-elf/rtld_lock.c:197 #2 0x2806fccb in _rtld_bind (obj=0x290c3000, reloff=64) at /usr/src/libexec/rtld-elf/rtld.c:642 #3 0x28069dc9 in _rtld_bind_start () at /usr/src/libexec/rtld-elf/i386/rtld_start.S:81 #4 0x290c3000 in ?? () #5 0x0040 in ?? () #6 0x00018747 in ?? () #7 0x00018747 in ?? () #8 0x29362f8c in __new_handler () from /home/taku/lib/debug/libsupc++.so.1 #9 0x00200246 in ?? () #10 0x290c3000 in ?? () #11 0x0040 in ?? () #12 0x2935eaf8 in __static_initialization_and_destruction_0 (__initialize_p=Variable "__initialize_p" is not available. ) at gthr-default.h:189 #13 0x2935f5c5 in __cxa_get_globals () from /home/taku/lib/debug/libsupc++.so.1 #14 0x290c2710 in ?? () #15 0xbfbfdc48 in ?? () #16 0x29356325 in _init () from /home/taku/lib/debug/libsupc++.so.1 #17 0x280714c9 in lock_release (lock=0x280714c9, lockstate=0x2807d2a4) ---Type to continue, or q to quit--- at /usr/src/libexec/rtld-elf/rtld_lock.c:219 Previous frame inner to this frame (corrupt stack?) (gdb) c Continuing. Hardware watchpoint 3: lock_place[0].count_rw Old value = 2 New value = 3 0x28f5275d in _thr_rtld_rlock_acquire (lock=0x28f63680) at /usr/src/lib/libthr/thread/thr_rtld.c:133 133 HANDLE_NESTED_ACQ(count_rw); (gdb) bt #0
Re: recent update breaks some ports
On Wed, Apr 11, 2012 at 03:53:38PM +0300, Konstantin Belousov wrote: > On Wed, Apr 11, 2012 at 01:34:01PM +0200, Stefan Farfeleder wrote: > > On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > > > > > > I'm experiencing that too (r234038), xine also no longer starts (hangs > > > at splash screen). > > > > FWIW backing out r233749 fixes evince and xine for me. > Please recompile at least rtld/libc/libthr with debugging symbols and get > a backtrace from the hung process. Attaching gdb to a hanging evince process yields this: (gdb) bt #0 0x000807f7c9ac in __error () from /lib/libthr.so.3 #1 0x000807f72431 in pthread_getschedparam () from /lib/libthr.so.3 #2 0x000807f78473 in pthread_kill () from /lib/libthr.so.3 #3 0x0008006676a9 in _rtld_thread_init () from /libexec/ld-elf.so.1 #4 0x000800664a6e in dlclose () from /libexec/ld-elf.so.1 #5 0x000800664e2c in dlclose () from /libexec/ld-elf.so.1 #6 0x000800664e86 in dlclose () from /libexec/ld-elf.so.1 #7 0x0008006651bb in dlclose () from /libexec/ld-elf.so.1 #8 0x000800665337 in dlclose () from /libexec/ld-elf.so.1 #9 0x000800665521 in dlclose () from /libexec/ld-elf.so.1 #10 0x0008006658ef in dlopen () from /libexec/ld-elf.so.1 #11 0x000800665bed in dlopen () from /libexec/ld-elf.so.1 #12 0x00080066065b in __tls_get_addr () from /libexec/ld-elf.so.1 #13 0x0008006634e7 in _rtld_addr_phdr () from /libexec/ld-elf.so.1 #14 0x000800664c96 in dlclose () from /libexec/ld-elf.so.1 #15 0x0008006657b4 in dlclose () from /libexec/ld-elf.so.1 #16 0x000806ba376b in g_module_open () from /usr/local/lib/libgmodule-2.0.so.0 #17 0x000800cb5097 in ev_module_get_path () from /usr/local/lib/libevdocument.so.3 #18 0x000806dd866c in g_type_module_use () from /usr/local/lib/libgobject-2.0.so.0 #19 0x000800cac949 in ev_backends_manager_get_document () from /usr/local/lib/libevdocument.so.3 #20 0x000800cb13f5 in ev_document_factory_add_filters () from /usr/local/lib/libevdocument.so.3 #21 0x000800cb15d4 in ev_document_factory_get_document () from /usr/local/lib/libevdocument.so.3 #22 0x000800ee77b9 in ev_job_load_new () from /usr/local/lib/libevview.so.3 #23 0x000800ee90f5 in ev_job_scheduler_push_job () from /usr/local/lib/libevview.so.3 #24 0x000807259274 in g_thread_create_full () from /usr/local/lib/libglib-2.0.so.0 #25 0x000807f70cdd in pthread_create () from /lib/libthr.so.3 #26 0x in ?? () Error accessing memory address 0x7f5fb000: Bad address. For xine it's this: (gdb) bt #0 0x000802e3c9ac in __error () from /lib/libthr.so.3 #1 0x000802e3262f in pthread_getschedparam () from /lib/libthr.so.3 #2 0x000802e3b09d in pthread_cond_signal () from /lib/libthr.so.3 #3 0x000800bfbf23 in metronom_sync_loop (this_gen=Variable "this_gen" is not available. ) at metronom.c:871 #4 0x000802e30cdd in pthread_create () from /lib/libthr.so.3 #5 0x in ?? () Error accessing memory address 0x7f7fc000: Bad address. I hope this helps. Stefan ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: Follow-up: Re: recent update breaks some ports
On Thu, Apr 12, 2012 at 04:04:11AM +0900, Taku YAMAMOTO wrote: > The following is the first occurence of wlock-within-wlock incident > when I run xfdesktop-settings under gdb. > > Hardware watchpoint 3: lock_place[0].count_ww > > Old value = 0 > New value = 1 > 0x28f52522 in _thr_rtld_wlock_acquire (lock=0x28f63600) > at /usr/src/lib/libthr/thread/thr_rtld.c:152 > 152 HANDLE_NESTED_ACQ(count_ww); > (gdb) bt > #0 0x28f52522 in _thr_rtld_wlock_acquire (lock=0x28f63600) > at /usr/src/lib/libthr/thread/thr_rtld.c:152 > #1 0x280719c1 in wlock_acquire () from /libexec/ld-elf.so.1 > #2 0x2806eb15 in dlopen_object () from /libexec/ld-elf.so.1 > #3 0x2806ef1b in load_filtee1 () from /libexec/ld-elf.so.1 > #4 0x2806ef7d in load_filtees () from /libexec/ld-elf.so.1 > #5 0x2806f318 in symlook_obj () from /libexec/ld-elf.so.1 > #6 0x2806f421 in symlook_list () from /libexec/ld-elf.so.1 > #7 0x2806fa0b in symlook_default () from /libexec/ld-elf.so.1 > #8 0x2806fc1a in find_symdef () from /libexec/ld-elf.so.1 > #9 0x2806a426 in reloc_non_plt () from /libexec/ld-elf.so.1 > #10 0x2806d453 in relocate_objects () from /libexec/ld-elf.so.1 > #11 0x2806ee6d in dlopen_object () from /libexec/ld-elf.so.1 > #12 0x2806f862 in rtld_dlopen () from /libexec/ld-elf.so.1 > #13 0x28d2a6b0 in g_module_open () from /usr/local/lib/libgmodule-2.0.so.0 > #14 0x28406894 in gtk_im_context_simple_new () >from /usr/local/lib/libgtk-x11-2.0.so.0 Thank you for the report, I hope that the patch at the end of the message would take care of this problem. > > > The following is the first occurence of rlock-within-wlock incident. > > Hardware watchpoint 2: lock_place[0].count_rw > > Old value = 0 > New value = 1 > 0x28f526fd in _thr_rtld_rlock_acquire (lock=0x28f63600) > at /usr/src/lib/libthr/thread/thr_rtld.c:133 > 133 HANDLE_NESTED_ACQ(count_rw); > (gdb) bt > #0 0x28f526fd in _thr_rtld_rlock_acquire (lock=0x28f63600) > at /usr/src/lib/libthr/thread/thr_rtld.c:133 > #1 0x28071291 in rlock_acquire () from /libexec/ld-elf.so.1 > #2 0x2806fccb in _rtld_bind () from /libexec/ld-elf.so.1 > #3 0x28069dc9 in _rtld_bind_start () from /libexec/ld-elf.so.1 > #4 0x290c3000 in ?? () > #5 0x0148 in ?? () > #6 0x29356318 in ?? () from /usr/lib/libsupc++.so.1 > #7 0x28f503e0 in _thr_once_init () >from /home/taku/work/build/biotite/usr/src/lib/libthr/libthr.so.3 > #8 0x in ?? () > #9 0x00200202 in ?? () > #10 0x290c3000 in ?? () > #11 0x0148 in ?? () > #12 0x2935eae0 in __gxx_personality_v0 () from /usr/lib/libsupc++.so.1 > #13 0x2935f5c5 in __cxa_get_globals () from /usr/lib/libsupc++.so.1 > #14 0x290c2710 in ?? () > #15 0xbfbfdc48 in ?? () > #16 0x29356325 in ?? () from /usr/lib/libsupc++.so.1 > #17 0x280714c9 in lock_release () from /libexec/ld-elf.so.1 > Previous frame inner to this frame (corrupt stack?) Unortunately, this trace is not usefule, it seems that you need to recompile rtld/libc/libthr with debugging symbols to get the issue fixed. diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index f02d276..1def854 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -85,7 +85,7 @@ static void digest_dynamic(Obj_Entry *, int); static Obj_Entry *digest_phdr(const Elf_Phdr *, int, caddr_t, const char *); static Obj_Entry *dlcheck(void *); static Obj_Entry *dlopen_object(const char *name, int fd, Obj_Entry *refobj, -int lo_flags, int mode); +int lo_flags, int mode, RtldLockState *lockstate); static Obj_Entry *do_load_object(int, const char *, char *, struct stat *, int); static int do_search_info(const Obj_Entry *obj, int, struct dl_serinfo *); static bool donelist_check(DoneList *, const Obj_Entry *); @@ -1672,13 +1672,14 @@ unload_filtees(Obj_Entry *obj) } static void -load_filtee1(Obj_Entry *obj, Needed_Entry *needed, int flags) +load_filtee1(Obj_Entry *obj, Needed_Entry *needed, int flags, +RtldLockState *lockstate) { for (; needed != NULL; needed = needed->next) { needed->obj = dlopen_object(obj->strtab + needed->name, -1, obj, flags, ((ld_loadfltr || obj->z_loadfltr) ? RTLD_NOW : RTLD_LAZY) | - RTLD_LOCAL); + RTLD_LOCAL, lockstate); } } @@ -1688,8 +1689,8 @@ load_filtees(Obj_Entry *obj, int flags, RtldLockState *lockstate) lock_restart_for_upgrade(lockstate); if (!obj->filtees_loaded) { - load_filtee1(obj, obj->needed_filtees, flags); - load_filtee1(obj, obj->needed_aux_filtees, flags); + load_filtee1(obj, obj->needed_filtees, flags, lockstate); + load_filtee1(obj, obj->needed_aux_filtees, flags, lockstate); obj->filtees_loaded = true; } } @@ -2489,7 +2490,7 @@ rtld_dlopen(const char *name, int fd, int mode) lo_flags |= RTLD_LO_TRACE; return (dlopen_object(name, fd, obj_main, lo_flags, - mode & (RTLD_MODEMASK | RTLD_GLOBAL))); + mode & (RTLD_MODEMASK | RTLD_GLOBAL), NULL)); } static vo
Follow-up: Re: recent update breaks some ports
The following is the first occurence of wlock-within-wlock incident when I run xfdesktop-settings under gdb. Hardware watchpoint 3: lock_place[0].count_ww Old value = 0 New value = 1 0x28f52522 in _thr_rtld_wlock_acquire (lock=0x28f63600) at /usr/src/lib/libthr/thread/thr_rtld.c:152 152 HANDLE_NESTED_ACQ(count_ww); (gdb) bt #0 0x28f52522 in _thr_rtld_wlock_acquire (lock=0x28f63600) at /usr/src/lib/libthr/thread/thr_rtld.c:152 #1 0x280719c1 in wlock_acquire () from /libexec/ld-elf.so.1 #2 0x2806eb15 in dlopen_object () from /libexec/ld-elf.so.1 #3 0x2806ef1b in load_filtee1 () from /libexec/ld-elf.so.1 #4 0x2806ef7d in load_filtees () from /libexec/ld-elf.so.1 #5 0x2806f318 in symlook_obj () from /libexec/ld-elf.so.1 #6 0x2806f421 in symlook_list () from /libexec/ld-elf.so.1 #7 0x2806fa0b in symlook_default () from /libexec/ld-elf.so.1 #8 0x2806fc1a in find_symdef () from /libexec/ld-elf.so.1 #9 0x2806a426 in reloc_non_plt () from /libexec/ld-elf.so.1 #10 0x2806d453 in relocate_objects () from /libexec/ld-elf.so.1 #11 0x2806ee6d in dlopen_object () from /libexec/ld-elf.so.1 #12 0x2806f862 in rtld_dlopen () from /libexec/ld-elf.so.1 #13 0x28d2a6b0 in g_module_open () from /usr/local/lib/libgmodule-2.0.so.0 #14 0x28406894 in gtk_im_context_simple_new () from /usr/local/lib/libgtk-x11-2.0.so.0 The following is the first occurence of rlock-within-wlock incident. Hardware watchpoint 2: lock_place[0].count_rw Old value = 0 New value = 1 0x28f526fd in _thr_rtld_rlock_acquire (lock=0x28f63600) at /usr/src/lib/libthr/thread/thr_rtld.c:133 133 HANDLE_NESTED_ACQ(count_rw); (gdb) bt #0 0x28f526fd in _thr_rtld_rlock_acquire (lock=0x28f63600) at /usr/src/lib/libthr/thread/thr_rtld.c:133 #1 0x28071291 in rlock_acquire () from /libexec/ld-elf.so.1 #2 0x2806fccb in _rtld_bind () from /libexec/ld-elf.so.1 #3 0x28069dc9 in _rtld_bind_start () from /libexec/ld-elf.so.1 #4 0x290c3000 in ?? () #5 0x0148 in ?? () #6 0x29356318 in ?? () from /usr/lib/libsupc++.so.1 #7 0x28f503e0 in _thr_once_init () from /home/taku/work/build/biotite/usr/src/lib/libthr/libthr.so.3 #8 0x in ?? () #9 0x00200202 in ?? () #10 0x290c3000 in ?? () #11 0x0148 in ?? () #12 0x2935eae0 in __gxx_personality_v0 () from /usr/lib/libsupc++.so.1 #13 0x2935f5c5 in __cxa_get_globals () from /usr/lib/libsupc++.so.1 #14 0x290c2710 in ?? () #15 0xbfbfdc48 in ?? () #16 0x29356325 in ?? () from /usr/lib/libsupc++.so.1 #17 0x280714c9 in lock_release () from /libexec/ld-elf.so.1 Previous frame inner to this frame (corrupt stack?) -- -|-__ YAMAMOTO, Taku | __ < - A chicken is an egg's way of producing more eggs. - ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: recent update breaks some ports
On Wed, 11 Apr 2012 15:53:38 +0300 Konstantin Belousov wrote: > On Wed, Apr 11, 2012 at 01:34:01PM +0200, Stefan Farfeleder wrote: > > On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > > > On Tue, Apr 10, 2012 at 01:44:02AM -0400, AN wrote: > > > > FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #7 r234042: Sun Apr 8 > > > > 17:36:38 EDT 2012 root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 > > > > > > > > After a recent update on Sunday to r234042 I am having a problem with 2 > > > > ports: > > > > > > > > gedit > > > > evince > > > > (using Gnome2 - ports tree up to date) > > > > > > > > My last update (before this past Sun build/install world) was 2 weeks > > > > ago, > > > > so it was definitely a change made in the last 2 weeks. > > > > > > > > Gedit will not start from the command line, or the applications menu. > > > > There is no error message on the command line. Evince will start, > > > > however > > > > when you try to open a document the program freezes. > > > > > > > > I have tried to: > > > > make deinstall > > > > make clean > > > > make install clean > > > > > > > > for both ports but they are still broken. I would appreciate any help. > > > > > > I'm experiencing that too (r234038), xine also no longer starts (hangs > > > at splash screen). > > > > FWIW backing out r233749 fixes evince and xine for me. > Please recompile at least rtld/libc/libthr with debugging symbols and get > a backtrace from the hung process. My wild guess tells me that the rtld_bind_lock gets held recursively when resolving filtered symbol. The attached band-aid patch supports the guess. I have the world/kernel as of r234038 and have difficulty to launch XFce's xfdesktop-settings (w/ im-scim.so which loads libstdc++), where every threads of xfdesktop-settings stuck into either "urdlck" or "uwrlck" states. I have to admit that the attached patch is something like 3-minute-hacking quality, but it at least avoids the stall. -- -|-__ YAMAMOTO, Taku | __ < - A chicken is an egg's way of producing more eggs. - --- lib/libthr/thread/thr_rtld.c.orig 2011-01-23 09:17:50.657791000 +0900 +++ lib/libthr/thread/thr_rtld.c2012-04-12 02:48:05.091322596 +0900 @@ -52,6 +52,10 @@ static void _thr_rtld_wlock_acquire(void struct rtld_lock { struct urwlock lock; + struct pthread * volatile owner; + int nested; + int count_rw; /* total rlock-within-wlock incidents */ + int count_ww; /* total wlock-within-wlock incidents */ char_pad[CACHE_LINE_SIZE - sizeof(struct urwlock)]; }; @@ -106,6 +110,15 @@ _thr_rtld_lock_destroy(void *lock) errno = errsave;\ } +#define HANDLE_NESTED_ACQ(statfield) { \ + if ((l->lock.rw_state & URWLOCK_WRITE_OWNER) != 0 &&\ + l->owner == curthread) {\ + l->nested++;\ + l->statfield++; \ + return; \ + } \ + } + static void _thr_rtld_rlock_acquire(void *lock) { @@ -117,6 +130,7 @@ _thr_rtld_rlock_acquire(void *lock) SAVE_ERRNO(); l = (struct rtld_lock *)lock; + HANDLE_NESTED_ACQ(count_rw); THR_CRITICAL_ENTER(curthread); while (_thr_rwlock_rdlock(&l->lock, 0, NULL) != 0) ; @@ -135,9 +149,11 @@ _thr_rtld_wlock_acquire(void *lock) SAVE_ERRNO(); l = (struct rtld_lock *)lock; + HANDLE_NESTED_ACQ(count_ww); THR_CRITICAL_ENTER(curthread); while (_thr_rwlock_wrlock(&l->lock, NULL) != 0) ; + l->owner = curthread; RESTORE_ERRNO(); } @@ -154,6 +170,14 @@ _thr_rtld_lock_release(void *lock) l = (struct rtld_lock *)lock; state = l->lock.rw_state; + if ((state & URWLOCK_WRITE_OWNER) != 0) { + if (l->nested == 0) + l->owner = NULL; + else { + l->nested--; + return; + } + } if (_thr_rwlock_unlock(&l->lock) == 0) { if ((state & URWLOCK_WRITE_OWNER) == 0) curthread->rdlock_count--; ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: recent update breaks some ports
On Wed, Apr 11, 2012 at 01:34:01PM +0200, Stefan Farfeleder wrote: > On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > > On Tue, Apr 10, 2012 at 01:44:02AM -0400, AN wrote: > > > FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #7 r234042: Sun Apr 8 > > > 17:36:38 EDT 2012 root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 > > > > > > After a recent update on Sunday to r234042 I am having a problem with 2 > > > ports: > > > > > > gedit > > > evince > > > (using Gnome2 - ports tree up to date) > > > > > > My last update (before this past Sun build/install world) was 2 weeks > > > ago, > > > so it was definitely a change made in the last 2 weeks. > > > > > > Gedit will not start from the command line, or the applications menu. > > > There is no error message on the command line. Evince will start, > > > however > > > when you try to open a document the program freezes. > > > > > > I have tried to: > > > make deinstall > > > make clean > > > make install clean > > > > > > for both ports but they are still broken. I would appreciate any help. > > > > I'm experiencing that too (r234038), xine also no longer starts (hangs > > at splash screen). > > FWIW backing out r233749 fixes evince and xine for me. Please recompile at least rtld/libc/libthr with debugging symbols and get a backtrace from the hung process. pgpNmx53muLmp.pgp Description: PGP signature
Re: recent update breaks some ports
On Tue, Apr 10, 2012 at 08:31:53AM +0200, Stefan Farfeleder wrote: > On Tue, Apr 10, 2012 at 01:44:02AM -0400, AN wrote: > > FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #7 r234042: Sun Apr 8 > > 17:36:38 EDT 2012 root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 > > > > After a recent update on Sunday to r234042 I am having a problem with 2 > > ports: > > > > gedit > > evince > > (using Gnome2 - ports tree up to date) > > > > My last update (before this past Sun build/install world) was 2 weeks ago, > > so it was definitely a change made in the last 2 weeks. > > > > Gedit will not start from the command line, or the applications menu. > > There is no error message on the command line. Evince will start, however > > when you try to open a document the program freezes. > > > > I have tried to: > > make deinstall > > make clean > > make install clean > > > > for both ports but they are still broken. I would appreciate any help. > > I'm experiencing that too (r234038), xine also no longer starts (hangs > at splash screen). FWIW backing out r233749 fixes evince and xine for me. Stefan ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: recent update breaks some ports
On Tue, 10 Apr 2012 08:31:53 +0200 Stefan Farfeleder wrote: > On Tue, Apr 10, 2012 at 01:44:02AM -0400, AN wrote: > > FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #7 r234042: Sun > > Apr 8 17:36:38 EDT 2012 > > root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 > > > > After a recent update on Sunday to r234042 I am having a problem > > with 2 ports: > > > > gedit > > evince > > (using Gnome2 - ports tree up to date) > > > > My last update (before this past Sun build/install world) was 2 > > weeks ago, so it was definitely a change made in the last 2 weeks. > > > > Gedit will not start from the command line, or the applications > > menu. There is no error message on the command line. Evince will > > start, however when you try to open a document the program freezes. > > > > I have tried to: > > make deinstall > > make clean > > make install clean > > > > for both ports but they are still broken. I would appreciate any > > help. > > I'm experiencing that too (r234038), xine also no longer starts (hangs > at splash screen). this might be related (or not, i did not have time to dig very deep). The issue i experienced is: ports/lang/erlang is not able to start it's wxgtk application. it boiled down to: any attempt to dlopen(3) /usr/lib/stdc++.so.6 from within the erlang vm results in a frozen erlang VM. how to repeat: # cd /usr/ports/lang/erlang # make -DWITHOUT_JAVA -DWITHOUT_X11 -DWITHOUT_ODBC -DWITHOUT_WX -DWITH_SMP install # erl 1> erl_ddll:load("/usr/lib", "libstdc++"). it hangs here. i attached gdb to a (debug enabled) erlang beam process, set some break points and saw that the the above erlang call results in dlopen(dlname, RTL_NOW), where dlname points to "/usr/lib/libstdc++.so.6". since the problem goes away when using libstdc++ from the gcc48 port (i suspect it goes away when using _any_ libstdc++ except the base system one). i stopped investigating an put the relevant line into my /etc/libmap.conf best regards stefan grundmann ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: recent update breaks some ports
On Tue, Apr 10, 2012 at 01:44:02AM -0400, AN wrote: > FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #7 r234042: Sun Apr 8 > 17:36:38 EDT 2012 root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 > > After a recent update on Sunday to r234042 I am having a problem with 2 > ports: > > gedit > evince > (using Gnome2 - ports tree up to date) > > My last update (before this past Sun build/install world) was 2 weeks ago, > so it was definitely a change made in the last 2 weeks. > > Gedit will not start from the command line, or the applications menu. > There is no error message on the command line. Evince will start, however > when you try to open a document the program freezes. > > I have tried to: > make deinstall > make clean > make install clean > > for both ports but they are still broken. I would appreciate any help. I'm experiencing that too (r234038), xine also no longer starts (hangs at splash screen). Stefan ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
recent update breaks some ports
FreeBSD FBSD10 10.0-CURRENT FreeBSD 10.0-CURRENT #7 r234042: Sun Apr 8 17:36:38 EDT 2012 root@FBSD10:/usr/obj/usr/src/sys/MYKERNEL amd64 After a recent update on Sunday to r234042 I am having a problem with 2 ports: gedit evince (using Gnome2 - ports tree up to date) My last update (before this past Sun build/install world) was 2 weeks ago, so it was definitely a change made in the last 2 weeks. Gedit will not start from the command line, or the applications menu. There is no error message on the command line. Evince will start, however when you try to open a document the program freezes. I have tried to: make deinstall make clean make install clean for both ports but they are still broken. I would appreciate any help. Thanks in advance ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"