fixme:pthread_kill_other_threads

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Thu Sep 27 16:19:03 CDT 2001


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 at elektron.ikp.physik.tu-darmstadt.de

Free Software: If you contribute nothing, expect nothing
--




More information about the wine-devel mailing list