Hi!

I was able to reproduce the hang on amd64. Attached is a backtrace, unfortunately from an optimized build but maybe it gives someone a quick idea what's going on.

WM
#0  __lll_lock_wait_private () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:97
#1  0x00002b8ad36223f8 in _L_lock_9627 () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00002b8ad36207e1 in *__GI___libc_free (mem=0x2b8ad3928e60) at 
malloc.c:3736
#3  0x00002b8ad3b6ccd2 in XS_Sane__Device_DESTROY (my_perl=<optimized out>, 
cv=<optimized out>) at Sane.xs:17
#4  0x00002b8ad2c3d54f in Perl_pp_entersub (my_perl=0x146a010) at pp_hot.c:3046
#5  0x00002b8ad2bd0572 in Perl_call_sv (my_perl=0x146a010, sv=0x1675d80, 
flags=45) at perl.c:2647
#6  0x00002b8ad2c43888 in S_curse (check_refcnt=1 '\001', sv=0x1624418, 
my_perl=0x146a010) at sv.c:6342
#7  Perl_sv_clear (my_perl=0x146a010, orig_sv=0x1624418) at sv.c:6073
#8  0x00002b8ad2c43f72 in Perl_sv_free2 (my_perl=0x146a010, sv=0x1624418) at 
sv.c:6474
#9  0x00002b8ad2c6bdb8 in Perl_leave_scope (my_perl=0x146a010, base=4) at 
scope.c:900
#10 0x00002b8ad2c75d50 in Perl_pp_leaveloop (my_perl=0x146a010) at pp_ctl.c:2249
#11 0x00002b8ad2c34a06 in Perl_runops_standard (my_perl=0x146a010) at run.c:41
#12 0x00002b8ad2bd612a in S_run_body (oldscope=1, my_perl=0x146a010) at 
perl.c:2350
#13 perl_run (my_perl=0x146a010) at perl.c:2268
#14 0x0000000000400ee9 in main (argc=3, argv=0x7fff667cf7e8, 
env=0x7fff667cf808) at perlmain.c:120

(gdb) bt full
#0  __lll_lock_wait_private () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:97
No locals.
#1  0x00002b8ad36223f8 in _L_lock_9627 () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#2  0x00002b8ad36207e1 in *__GI___libc_free (mem=0x2b8ad3928e60) at 
malloc.c:3736
        ignore1 = 128
        ignore2 = <optimized out>
        ignore3 = -512
        ar_ptr = 0x2b8ad3928e60
        p = 0x14982e0
#3  0x00002b8ad3b6ccd2 in XS_Sane__Device_DESTROY (my_perl=<optimized out>, 
cv=<optimized out>) at Sane.xs:17
        handle = 0x14982f0
        sv = 0x161e740
        sp = <optimized out>
        ax = 1
        mark = <optimized out>
        items = <optimized out>
#4  0x00002b8ad2c3d54f in Perl_pp_entersub (my_perl=0x146a010) at pp_hot.c:3046
        markix = 0
        sp = <optimized out>
        sv = 0x1675d80
        gv = 0x0
        cv = 0x1675d80
        cx = <optimized out>
        gimme = 1
        hasargs = <optimized out>
#5  0x00002b8ad2bd0572 in Perl_call_sv (my_perl=0x146a010, sv=0x1675d80, 
flags=45) at perl.c:2647
        sp = <optimized out>
        myop = {op_next = 0x0, op_sibling = 0x0, op_ppaddr = 0, op_targ = 0, 
op_type = 0, op_opt = 0, op_latefree = 0, op_latefreed = 0, op_attached = 0, 
          op_spare = 0, op_flags = 65 'A', op_private = 0 '\000', op_first = 
0x0, op_other = 0x7fff667cf370}
        method_op = {op_next = 0x165cbd0, op_sibling = 0x1675d80, op_ppaddr = 
0x1623f38, op_targ = 21407824, op_type = 128, op_opt = 0, op_latefree = 0, 
          op_latefreed = 1, op_attached = 0, op_spare = 5, op_flags = 70 'F', 
op_private = 1 '\001', op_first = 0x2b8ad2c43162}
        oldmark = 0
        retval = 0
---Type <return> to continue, or q <return> to quit---
        oldscope = 5
        oldcatch = 0 '\000'
        ret = <optimized out>
        oldop = 0x161d680
        cur_env = {je_prev = 0x7fff667cf5d0, je_buf = {{__jmpbuf = 
{140734912852848, 6804210356706508014, 0, 21955016, 23448528, 21407872, 
                -6803910496586662674, 682522875078278382}, __mask_was_saved = 
0, __saved_mask = {__val = {79, 47875266131712, 140734912853196, 0, 
                  47875266131712, 47875261884042, 21405712, 206158430224, 
140734912852976, 140734912852784, 21405712, 21636752, 21407848, 23448528, 
                  47875249246256, 0}}}}, je_ret = 0, je_mustcatch = 0 '\000'}
#6  0x00002b8ad2c43888 in S_curse (check_refcnt=1 '\001', sv=0x1624418, 
my_perl=0x146a010) at sv.c:6342
        tmpref = 0x165cbd0
        destructor = 0x1675d80
        sp = <optimized out>
        stash = 0x1623f38
#7  Perl_sv_clear (my_perl=0x146a010, orig_sv=0x1624418) at sv.c:6073
        stash = <optimized out>
        type = 7
        sv_type_details = <optimized out>
        iter_sv = <optimized out>
        next_sv = <optimized out>
        sv = <optimized out>
#8  0x00002b8ad2c43f72 in Perl_sv_free2 (my_perl=0x146a010, sv=0x1624418) at 
sv.c:6474
No locals.
#9  0x00002b8ad2c6bdb8 in Perl_leave_scope (my_perl=0x146a010, base=4) at 
scope.c:900
        uv = <optimized out>
        type = <optimized out>
        sv = 0x148c098
        value = <optimized out>
        gv = <optimized out>
        av = <optimized out>
        hv = <optimized out>
        ptr = 0x1495cd8
        str = <optimized out>
        i = <optimized out>
        was = 0 '\000'
---Type <return> to continue, or q <return> to quit---
#10 0x00002b8ad2c75d50 in Perl_pp_leaveloop (my_perl=0x146a010) at pp_ctl.c:2249
        sp = 0x146f710
        cx = 0x146fb70
        gimme = <optimized out>
        newsp = 0x146f710
        newpm = 0x0
        mark = <optimized out>
#11 0x00002b8ad2c34a06 in Perl_runops_standard (my_perl=0x146a010) at run.c:41
        op = <optimized out>
#12 0x00002b8ad2bd612a in S_run_body (oldscope=1, my_perl=0x146a010) at 
perl.c:2350
No locals.
#13 perl_run (my_perl=0x146a010) at perl.c:2268
        oldscope = 1
        ret = <optimized out>
        cur_env = {je_prev = 0x146a288, je_buf = {{__jmpbuf = {0, 
6804212853877669102, 4198136, 140734912853984, 0, 0, -6803910496561496850, 
                682522877640998126}, __mask_was_saved = 0, __saved_mask = 
{__val = {140733193388033, 0, 0, 47875240839408, 21419984, 0, 0, 4198136, 
                  140734912853984, 47875238619045, 0, 21405712, 0, 21405712, 
21405712, 0}}}}, je_ret = 0, je_mustcatch = 0 '\000'}
#14 0x0000000000400ee9 in main (argc=3, argv=0x7fff667cf7e8, 
env=0x7fff667cf808) at perlmain.c:120
        exitstatus = <optimized out>
        i = <optimized out>

Reply via email to