Re: Bug#696757: ecl hang: SIGNAL problem
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
Reply to: