[Wine] exec()'ing Linux applications from Wine

Anna Wiggins annabunches at gmail.com
Sun May 15 17:08:59 CDT 2011


This may sound like a strange request, but I'm currently investigating
how to execute Linux executable files from wine. The use case for this
is that I play a lot of games on Steam, as well as a number of
Linux-native games. I would like to be able to add the Linux games as
'non-Steam' games so that Steam keeps track of how long I play them, and
so friends can see what games I'm playing. Basically, all of the fun
little things Steam does for you.

Typical of a Windows app, Steam will only show files that end in .exe,
so as a test, I wrote a shell script to launch Minecraft, set it
executable, and called the script test.exe. Steam successfully launches
the game! However, it then produces a message saying 'failed to launch
<appname>'.

So, however wine calls exec/execve/whatever to launch a native Linux
executable, it appears to do it in such a way that the parent process
doesn't know it is a child process. Linux knows that it's a child (from
pstree):

Steam.exe(28395)---test.exe(28530)---java(28531)

also see ps:

$ ps efo 'pid,ppid,comm' | egrep 'Steam|test|java'
28395 28373  \_ Steam.exe
28530 28395      \_ test.exe
28531 28530          \_ java


Does anyone know why this happens, and how it might be corrected? Is it
a fundamental incompatibility between the APIs for Windows and Linux? My
attempts to strace wine (using strace -Tttfvo) caused wine to fail to
launch, and produced a 230 Mb strace file filled with what seems like an
enormous call to recvmsg():

$ egrep '\{NULL, 0\}, \{NULL, 0\}' /tmp/steam_minecraft.trace | cut -c
1-1024
28727 17:57:10.151689 recvmsg(23, {msg_name(1257252)=NULL,
msg_iov(735032052973305856)=[{NULL, 0}, {NULL, 8183968}


Further down, this same function call is filled with pages and pages of:

{NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}



So, I'm not sure how to strace wine successfully. At any rate, I'm
hoping someone out there knows why wine and/or Steam can't detect that a
native-Linux child process is successfully running.


Also, for reference, I am running wine 1.3.19 compiled from source, on
fedora 14 (x86_64).



- Anna

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 899 bytes
Desc: OpenPGP digital signature
URL: <http://www.winehq.org/pipermail/wine-users/attachments/20110515/df50d38b/attachment.pgp>


More information about the wine-users mailing list