Hallo,
I don't understand why pthread_kill_other_threads ist called when a programm
creates a new process. With the pthread_kill_other_threads call, the starting
process dies. This is a +relay,+server,+... log:
trace:dosfs:DOSFS_GetFullName returning /home/dosd/cae/ql82/scs/TKWDOG.EXE = D:\CAE\QL82\SCS\TKWDOG.EXE
08068938: new_process( inherit_all=0, create_flags=67108864, start_flags=257, exe_file=200, hstdin=4, hstdout=8, hstderr=12, cmd_show=1, filename="D:\cae\ql82\scs\TKWDOG.EXE" )
08068938: new_process() = 0 { info=204 }
fixme:pthread_kill_other_threads_np
08068938: select( flags=12, cookie=0x405c5778, sec=1001624181, usec=913175, handles={204} )
08068938: select() = PENDING
00000000: *fd* 0 -> 46
08625a70: *fd* 6 <- 46
08625a70: *fd* 8 <- 47
08625a70: init_thread( unix_pid=2070, teb=0x40127ce0, entry=(nil), reply_fd=6, wait_fd=8 )
08625a70: init_thread() = 0 { pid=0x86259a0, tid=0x8625a70, boot=0, version=53 }
This is an strace of that part:
1898 close(28) = 0
1898 chdir("/home/dosd/cae/ql82/scs") = 0
1898 write(2, "fixme:pthread_kill_other_threads"..., 36) = 36
1898 execve("/usr/local/bin/wine", ["/usr/local/bin/wine", "--", "tkwdog.exe"], [/* 57 vars */] <unfinished ...>
and I think this relates to scheduler/process.c:fork_and_exec
if (newdir) chdir(newdir);
if (argv && envp)
{
if (!filename)
{
argv[1] = "--";
exec_wine_binary( argv, envp );
}
else execve( filename, argv, envp );
}
What can happen between chdir() and execve() to trigger the
pthread_kill_other_threads() call?
Bye
Uwe Bonnes bon(a)elektron.ikp.physik.tu-darmstadt.de
Free Software: If you contribute nothing, expect nothing
--