Re: recent update breaks some ports

2012-04-12 Thread Stefan Farfeleder
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

2012-04-12 Thread Konstantin Belousov
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

2012-04-12 Thread Stefan Farfeleder
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

2012-04-11 Thread Taku YAMAMOTO
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

2012-04-11 Thread Stefan Farfeleder
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

2012-04-11 Thread Konstantin Belousov
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

2012-04-11 Thread Taku YAMAMOTO
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

2012-04-11 Thread Taku YAMAMOTO
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

2012-04-11 Thread Konstantin Belousov
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

2012-04-11 Thread Stefan Farfeleder
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

2012-04-10 Thread Stefan Grundmann
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

2012-04-09 Thread Stefan Farfeleder
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

2012-04-09 Thread AN
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"