Bug#696757: ecl hang: SIGNAL problem

Christoph Egger christoph at debian.org
Tue Feb 5 01:41:10 UTC 2013


Hi all!

I guess ecl has never ever worked with libgc and enabled threads on
kfreebsd (seems to be a header-only thing and libgc added thread support
for kfreebsd *after* the last successfull ecl build).

It still seems to be waiting in GC_stop_world() for all other processes
to finish and probably the issue is asynchronous_signal_servicing_thread
(the function the non-eglibc non stopping thread is in)
not correctly responding to SIG_SUSPEND (the signal sent in
GC_stop_world)

I guess we can back out the threads patch from libgc. If any of you can
figure out how to fix that thing that'd be an option as well.

    Christoph

BT from the stopping thread:

#0  __pthread_sigsuspend () at ../ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/pt-sigsuspend.S:24
24	../ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/pt-sigsuspend.S: No such file or directory.
(gdb) bt full
#0  __pthread_sigsuspend () at ../ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/pt-sigsuspend.S:24
No locals.
#1  0x0000000800fb43b8 in __pthread_wait_for_restart_signal (self=<optimized out>) at pthread.c:1291
        mask = {{__sigbits = {2, 0, 0, 0}, __bits = {2, 0, 0, 0}}}
#2  0x0000000800fb645a in suspend (self=<optimized out>) at restart.h:34
No locals.
#3  __new_sem_wait (sem=<optimized out>) at semaphore.c:96
        self = 0x80070d7a0
        extr = {pu_object = 0x800fabc60, pu_extricate_func = 0x800fb5f90 <new_sem_extricate_func>}
#4  0x0000000800d8446d in GC_stop_world () at pthread_stop_world.c:426
        i = 0
        n_live_threads = 1
        code = 4316632
#5  0x0000000800d71597 in GC_stopped_mark (stop_func=0x800d70cec <GC_never_stop_func>) at alloc.c:474
        i = 8
        dummy = -111552
        start_time = 14094345
        current_time = 32767
#6  0x0000000800d71186 in GC_maybe_gc () at alloc.c:299
        n_partial_gcs = 1
#7  0x0000000800d714de in GC_collect_a_little_inner (n=1) at alloc.c:433
        i = 0
#8  0x0000000800d79153 in GC_generic_malloc_many (lb=80, k=1, result=0x800f8cd08) at mallocx.c:298
        op = 0x41b650
        p = 0x7ffffffe4d20
        opp = 0x41b616
        lw = 10
        lg = 5
        my_bytes_allocd = 0
        ok = 0x800f8c1e0
#9  0x0000000800d829c9 in GC_malloc (bytes=80) at thread_local_alloc.c:176
        my_fl = 0x800f8cd08
        my_entry = 0x0
        next = 0x7ffffffe4d60
        granules = 5
        tsd = 0x800f8cc18
        result = 0x80070e000
        tiny_fl = 0x800f8cce0
        k = 0x800f8cc18
#10 0x00000000004875e3 in ecl_alloc_object (t=t_bytecodes) at /home/christoph/debian/ecl-stable/src/c/alloc_2.d:578
        obj = 0x1
        the_env = 0x80070e000
#11 0x000000000041b0aa in asm_end (env=0x80070e000, beginning=10, definition=0xd77881) at /home/christoph/debian/ecl-stable/src/c/compiler.d:171
        c_env = 0x7ffffffe4e90
        bytecodes = 0x6e4828
        code_size = 9
        data_size = 3
        i = 7970960
        code = 0x0
        file = 0xd1e0c0
        position = 0x6fb3
#12 0x0000000000422804 in si_eval_with_env (narg=1, form=0xd77881) at /home/christoph/debian/ecl-stable/src/c/compiler.d:2874
        __unwinding = 32767
        __next_fr = 0x799c40
        __the_env = 0x80070e000
        __nr = 176093548304
        old_c_env = 0x0
        new_c_env = {variables = 0x1, macros = 0x1, lexical_level = 1, constants = 0xd775d1, lex_env = 0x1, env_depth = 0, env_size = 0, mode = 0, 
          coalesce = 1, stepping = 0}
        handle = 10
        bytecodes = 0x8016b7e34
        interpreter_env = 0x1
        compiler_env = 0x1
        the_env = 0x80070e000
        env = 0x1
        stepping = 0x1
        compiler_env_p = 0x1
        execute = 0x6d60b8
        ARGS = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7ffffffe5010, reg_save_area = 0x7ffffffe4f50}}
#13 0x000000000047b4d4 in si_load_source (source=0xd1e0c0, verbose=0x1, print=0x1, external_format=0x6e6498)
    at /home/christoph/debian/ecl-stable/src/c/load.d:107
        form_index = 0x6fb3
        pathname = 0xd1e540
        location = 0xd3ead1
        __unwinding = 0
        __next_fr = 0x0
        __the_env = 0x80070e000
        __nr = 1
        the_env = 0x80070e000
        x = 0xd77881
        strm = 0xd196e0
---Type <return> to continue, or q <return> to quit---
#14 0x00000000004973c1 in APPLY_fixed (n=4, fn=0x47b316 <si_load_source>, x=0x80070e010) at /home/christoph/debian/ecl-stable/src/c/apply.d:354
No locals.
#15 0x0000000000415399 in ecl_apply_from_stack_frame (frame=0x7ffffffe7b20, x=0x6e4c50) at /home/christoph/debian/ecl-stable/src/c/eval.d:52
        sp = 0x80070e010
        narg = 4
        fun = 0x782380
#16 0x00000000004157f5 in cl_funcall (narg=-1, function=0x6e4c50) at /home/christoph/debian/ecl-stable/src/c/eval.d:129
        __ecl_frame = {frs_jmpbuf = {{__jmpbuf = {140737488255777, 1, 34367135760, 4, 34367135744, 13766152, 530970910208648, 4295000484}, 
              __mask_was_saved = 1000, __saved_mask = {{__sigbits = {1000, 4294967295, 0, 1360024858}, __bits = {1000, 4294967295, 0, 1360024858}}}}}, 
          frs_val = 0x15d6d13a, frs_bds_top_index = 1355357842, frs_ihs = 0xb8bc825, frs_sp = 1355357842}
        frame = 0x7ffffffe7b20
        env = 0x80070e000
        output = 0x3200
#17 0x000000000047bf1c in cl_load (narg=3, source=0xd1e540) at /home/christoph/debian/ecl-stable/src/c/load.d:209
        not_a_filename = 0
        the_env = 0x80070e000
        KEYS = {0x6e7b90, 0x6e7458, 0x6e6af0, 0x6e6930, 0x6e7768}
        verbose = 0x1
        print = 0x1
        if_does_not_exist = 0x6e67a8
        external_format = 0x6e6498
        search_list = 0x1
        pathname = 0xd1e4c0
        pntype = 0xd181b0
        hooks = 0x7324f1
        filename = 0xd1e0c0
        function = 0x6e4c50
        ok = 0x1
        KEY_VARS = {0x1, 0x1, 0x1, 0x1, 0x1, 0x6d60b8, 0x1, 0x1, 0x1, 0x1}
        ARGS = {{args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7ffffffe7ed0, reg_save_area = 0x7ffffffe7e10}}, sp = 0x0, narg = 0}}
#18 0x00000000004893f1 in APPLY (n=3, fn=0x47b5ce <cl_load>, x=0x79a038) at /home/christoph/debian/ecl-stable/src/c/apply.d:28
No locals.
#19 0x00000000004178ed in ecl_interpret (frame=0x7ffffffeb050, env=0x1, bytecodes=0x731370) at /home/christoph/debian/ecl-stable/src/c/interpreter.d:495
        x = 0x6dca98
        frame = 0x7ffffffeaae0
        offsets = {0, 71, 7167, 424, 557, 677, 797, 813, 966, 1059, 167, 265, 1260, 1424, 1627, 1908, 2123, 2280, 2489, 2514, 2584, 2641, 3429, 3533, 3616, 
          3765, 4019, 4127, 4297, 5233, 5316, 5527, 5819, 5913, 6025, 6144, 6300, 6451, 6588, 6677, 6773, 6869, 7018, 7291, 7398, 7492, 7632, 7817, 8025, 
          8153, 8326, 8522, 8623, 8789, 8935, 9108, 9287, 9500, 9681, 9825, 9922, 10360, 10835, 10845, 12974, 13713, 14000, 14386, 14685, 11276, 12046, 
          11644, 12526, 11210, 12738, 10972, 7211, 11031, 14821, 15503, 16056}
        the_env = 0x80070e000
        frame_index = 0
        vector = 0x78bf70
        data = 0x734ee0
        reg0 = 0x76f720
        reg1 = 0x416316
        lex_env = 0x1
        narg = 3
        frame_aux = {t = 33 '!', m = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000', stack = 0x0, base = 0x79a038, size = 3, env = 0x80070e000}
        ihs = {next = 0x7fffffff0cc0, function = 0x731370, lex_env = 0x1, index = 3, bds = 14}
#20 0x000000000042295e in si_eval_with_env (narg=1, form=0xd3dde1) at /home/christoph/debian/ecl-stable/src/c/compiler.d:2896
        frame = {t = 33 '!', m = -35 '\335', padding1 = -45 '\323', padding2 = 0 '\000', stack = 0x0, base = 0x0, size = 0, env = 0x80070e000}
        output = 0x7ffffffeb120
        old_c_env = 0x0
        new_c_env = {variables = 0x0, macros = 0x0, lexical_level = 0, constants = 0x0, lex_env = 0x0, env_depth = 0, env_size = 0, mode = 0, coalesce = 0, 
          stepping = 0}
        handle = 7
        bytecodes = 0x731370
        interpreter_env = 0x1
        compiler_env = 0x1
        the_env = 0x80070e000
        env = 0x1
        stepping = 0x1
        compiler_env_p = 0x1
        execute = 0x6d60b8
        ARGS = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7ffffffeb220, reg_save_area = 0x7ffffffeb160}}
#21 0x000000000047b4d4 in si_load_source (source=0xd07700, verbose=0x1, print=0x1, external_format=0x6e6498)
    at /home/christoph/debian/ecl-stable/src/c/load.d:107
        form_index = 0x32f
        pathname = 0xd07b40
        location = 0xd0f0b1
        __unwinding = 0
        __next_fr = 0x0
        __the_env = 0x80070e000
        __nr = 0
        the_env = 0x80070e000
        x = 0xd3dde1
        strm = 0xd09500
#22 0x00000000004973c1 in APPLY_fixed (n=4, fn=0x47b316 <si_load_source>, x=0x80070e010) at /home/christoph/debian/ecl-stable/src/c/apply.d:354
No locals.
#23 0x0000000000415399 in ecl_apply_from_stack_frame (frame=0x7ffffffedd30, x=0x6e4c50) at /home/christoph/debian/ecl-stable/src/c/eval.d:52
        sp = 0x80070e010



More information about the pkg-common-lisp-devel mailing list