https://bugs.winehq.org/show_bug.cgi?id=43103
Bug ID: 43103 Summary: unixfs unable to find file when wine run in a network namespace Product: Wine Version: 2.3 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: shell32 Assignee: wine-bugs@winehq.org Reporter: lucianposton@gmail.com Distribution: ---
If I run wine within a network namespace, wine is unable to find a file, exiting with an error, wine: cannot find L"unix\home\user\GameDir\game.exe"
To repro the bug, the prefix must be setup such that:
1) "$WINEPREFIX/drive_c/Program Files/GameDir" is a symlink to a directory in $HOME, outside of the prefix but on the same partition, and 2) the prefix's registry has been modified with the regedit described at https://github.com/wine-mirror/wine/blob/252051cb1b3f0fc4aade128370fb3e38d90... . This appears to cause the following behavior to change in wine: https://github.com/wine-mirror/wine/blob/252051cb1b3f0fc4aade128370fb3e38d90...
If I start wine using
cd "$WINEPREFIX/drive_c/Program Files/GameDir" ; wine game.exe
it behaves fine. wine is able to find game.exe.
However, if I start wine within a namespace,
cd "$WINEPREFIX/drive_c/Program Files/GameDir" ; ip netns exec MyNetworkNamespace wine game.exe
wine exits with the error: wine: cannot find L"unix\home\user\GameDir\game.exe"
I expect both to succeed (or both fail, if that's the expect behavior when the regedit in #2 is performed).
*Ancillary notes on setting up a network namespace* I setup the network namespace using macvlan, which requires your kernel to have CONFIG_MACVLAN (if it is compiled as a module, load it). Then you can create a network namespace and a virtual network interface within the namespace as follows:
REAL_IFACE=eth0 # set this to your real network interface from ifconfig NETNS=MyNetworkNamespace # set this to whatever you want to name your namespace NETNS_IFACE=vlaneth0 # set this to whatever you want to name your new virtual interface inside the namespace
ip netns add "${NETNS}" ip link add link "${REAL_IFACE}" name "${NETNS_IFACE}" type macvlan ip link set "${NETNS_IFACE}" netns "${NETNS}" ip netns exec "${NETNS}" ip link set "${NETNS_IFACE}" up
# Now give the new interface an ip. I use dhcpcd, but you can use your favorite dhcp client (or set the ip directly) ip netns exec "${NETNS}" dhcpcd "${NETNS_IFACE}"
# The interface should now have an ip, which we can verify by running ifconfig inside the namespace ip netns exec "${NETNS}" ifconfig ip netns exec "${NETNS}" wine game.exe
# Note you can use sudo -u to avoid running wine as root in the above command.
https://bugs.winehq.org/show_bug.cgi?id=43103
Lucian Poston lucianposton@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |lucianposton@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=43103
Lucian Poston lucianposton@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|unixfs unable to find file |unixfs unable to find file |when wine run in a network |when wine run in a linux |namespace |namespace
https://bugs.winehq.org/show_bug.cgi?id=43103
--- Comment #1 from Lucian Poston lucianposton@gmail.com --- I tested with a UTS namespace and a mount namespace, and the same issue occured. This may affect other types of namespaces.
https://en.wikipedia.org/wiki/Linux_namespaces
https://bugs.winehq.org/show_bug.cgi?id=43103
Sebastian Lackner sebastian@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sebastian@fds-team.de
https://bugs.winehq.org/show_bug.cgi?id=43103
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com