On Fri, 07 Jun 2019 00:00:13 GMT, hv wrote: > On Thu, 06 Jun 2019 10:30:58 -0700, jkeenan wrote: > > Watchpoint 2: PL_locale_mutex > > > > Old value = 0x801e1c1e0 > > New value = 0x2 > > _pthread_mutex_destroy (mutex=0xa45b28) at pthread_md.h:95 > > 95 return (TCB_GET64(tcb_thread)); > > Current language: auto; currently minimal > > (gdb) bt > > #0 _pthread_mutex_destroy (mutex=0xa45b28) at pthread_md.h:95 > > #1 0x000000000044c554 in Perl_sys_term () at perl.c:152 > > #2 0x0000000000421472 in main (argc=<value optimized out>, > > argv=<value optimized out>, > > env=0x7fffffffe7a0) at perlmain.c:155 > > Ok, we're getting somewhere - somewhere weird, but somewhere. > > Please could you post the extract from pthread_md.h around line 95, > presumably a #define or inline function for _pthread_mutex_destroy? # /usr/src/lib/libthr/arch/amd64/include/pthread_md.h ##### 92 static __inline struct pthread * 93 _get_curthread(void) 94 { 95 return (TCB_GET64(tcb_thread)); 96 } ##### > If you're also able to find the definition for TCB_GET64 somewhere in the > include files (most likely under /usr/include) that would help too. > # /usr/src/lib/libthr/arch/amd64/include/pthread_md.h ##### 65 /* 66 * Evaluates to the value of the per-tcb variable name. 67 */ 68 #define TCB_GET64(name) ({ \ 69 __tcb_type(name) __result; \ 70 \ 71 u_long __i; \ 72 __asm __volatile("movq %%fs:%1, %0" \ 73 : "=r" (__i) \ 74 : "m" (*(volatile u_long *)(__tcb_offset(name)))); \ 75 __result = (__tcb_type(name))__i; \ 76 \ 77 __result; \ 78 }) ##### -- James E Keenan (jkeenan@cpan.org) --- via perlbug: queue: perl5 status: open https://rt.perl.org/Ticket/Display.html?id=134172Thread Previous | Thread Next