On Mon, 2005-02-21 at 15:42 +0100, CC-Band wrote:
hi,
i tried out the agnula demudi project.
jack & hydrogen works fine but sometimes hydrogen crashes immediately.
what can i do to get information, why?
I am having the exact same problem with Hydrogen. Most of the time it
crashes immediately. If I start it repeatedly it will eventually
succeed.
I have found it's a lot more likely to segfault immediately on startup
if JACK is run in verbose mode, and the crashes are more likely with
lower latencies. 32 frames almost always crashes. 128 almost always
succeeds. 64 is hit or miss. Lower latencies are less likely to crash
on a faster machine.
I have reproduced this across several versions of JACK and Hydrogen on
multiple machines.
I got a backtrace from gdb and this is where it crashes (from
src/lib/Hydrogen.cpp):
inline void audioEngine_process_clearAudioBuffers(uint32_t nFrames)
{
*---> memset( m_pMainBuffer_L, 0, nFrames * sizeof( float ) ); // clear main
out Left
memset( m_pMainBuffer_R, 0, nFrames * sizeof( float ) ); // clear main out
Right
As soon as it goes to clear the audio buffers, boom.
As the problem is timing sensitive it's certainly a race condition. I
cannot determine whether the bug is in JACK or hydrogen though.
I have reported the problem on hydrogen-devel and got no response
whatsoever. It's getting to be frustrating as the bug is 100%
reproducible, but I can't even get the Hydrogen developers to ACK my bug
report.
Here is the backtrace.
Lee
(gdb) bt full
#0 0xb759949b in memset (dstpp=0x0, c=0, len=512)
at ../sysdeps/i386/memset.c:65
d0 = 128
dstp = 0
x = 0
#1 0x0807da0f in audioEngine_process_clearAudioBuffers (nFrames=128) at
src/lib/Hydrogen.cpp:702
No locals.
#2 0x08074381 in audioEngine_process (nframes=128, arg=0x0) at
src/lib/Hydrogen.cpp:746
res = 0
startTimeval = {tv_sec = 1107297223, tv_usec = 403047}
sendPatternChange = 183
res2 = -1218109252
renderTime_start = {tv_sec = -1217118338, tv_usec = -1208618368}
i = 3086349340
pNote = (class Note *) 0x1
renderTime_end = {tv_sec = 91845001, tv_usec = -1084229004}
ladspaTime_start = {tv_sec = 52302212, tv_usec = 0}
ladspaTime_end = {tv_sec = -1208836712, tv_usec = 0}
val_L = -0.87490797
val_R = 1.40129846e-45
fRenderTime = 0
fLadspaTime = 1.821688e-44
finishTimeval = {tv_sec = -1208834440, tv_usec = -1084229128}
sampleRate = 1.17287768e-35
#3 0xb7f2e9f9 in jack_client_thread (arg=0x82f59d0) at client.c:1264
control = (volatile struct {...} *) 0xb73a3000
event = {type = GraphReordered, x = {n = 0, port_id = 0, self_id
= 0}, y = {n = 1, ptid = 1, other_id = 1}}
status = 0 '\0'
c = 0 '\0'
err = 0
#4 0xb773fe51 in pthread_start_thread (arg=0xbf5ffbe0) at manager.c:309
default_params = {__sched_priority = 0}
request = {req_thread = 0x0, req_kind = REQ_CREATE, req_args =
{create = {attr = 0x0, fn = 0, arg = 0x0, mask = {__val = {
0 <repeats 32 times>}}}, free = {thread_id = 0}, exit = {code
= 0}, post = 0x0, for_each = {fn = 0, arg = 0x0}}}
outcome = (void *) 0x0
#5 0xb75f96ea in clone () from /usr/lib/debug/libc.so.6
fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres =
{mnt_fsname = 0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0,
mnt_freq = 0,
mnt_passno = 0}, fs_ret = {fs_spec = 0x0, fs_file = 0x0, fs_vfstype
= 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq = 0, fs_passno = 0}}
__elf_set___libc_subfreeres_element_fstab_free__ = (const void
*) 0xb762dce0