On Tuesday, 27 December 2016 at 17:27:14 UTC, unDEFER wrote:
Hello I have very simple line with exec-command:

execl("/bin/bash".toStringz(), "/bin/bash".toStringz(), "-c".toStringz(), command.toStringz(), null);

And on this line on toStringz my program sometimes hangs.
backtrace:

(gdb) bt
#0 0x00007f3acd535c6d in nanosleep () at ../sysdeps/unix/syscall-template.S:84 #1 0x000000000066f57e in core.thread.Thread.sleep(core.time.Duration) () #2 0x00000000006b2824 in core.internal.spinlock.SpinLock.yield(ulong) shared
    ()
#3 0x00000000006b27c0 in core.internal.spinlock.SpinLock.lock() shared () #4 0x00000000006a7244 in gc.gc.GC.runLocked!(gc.gc.GC.mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), gc.gc.mallocTime, gc.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) () #5 0x00000000006a0bc6 in gc.gc.GC.malloc(ulong, uint, ulong*, const(TypeInfo))
    ()
#6  0x00000000006721d3 in gc_qalloc ()
#7 0x00000000006a99a1 in rt.lifetime.__arrayAlloc(ulong, const(TypeInfo), const(TypeInfo)) ()
#8  0x000000000067523a in _d_newarrayU ()
#9  0x0000000000675324 in _d_newarrayiT ()
#10 0x000000000068fde6 in std.string.toStringz(const(char)[]) ()
#11 0x000000000068fe79 in std.string.toStringz(const(immutable(char)[])) () #12 0x0000000000592dc9 in unde.command_line.run.fork_command(unde.global_state.CMDGlobalState, immutable(char)[], immutable(char)[], std.concurrency.Tid) (
    tid=..., command=..., cwd=..., cgs=0x7f3abcdffb80)
    at source/unde/command_line/run.d:2002

What is it? For what it waits?

What context are you calling this from? Is this in a signal handler? Or from inside a destructor of a GC-owned object?

Reply via email to