https://bugs.winehq.org/show_bug.cgi?id=44393
Bug ID: 44393 Summary: cannot read form named pipe in wine 3.0 after bug fix 43217 Product: Wine Version: 3.0 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: kernel32 Assignee: wine-bugs@winehq.org Reporter: luca.cunegondi@ocme.com Distribution: ---
a commercial cad application has commands that can read directly from named pipe if file name starts with a '|'. Example: open_infile '| /usr/bin/ls /tmp | grep pdf' read_file ...
This worked perfectly until wine 2.17 and wine-staging 2.18 (on Arch Linux), then stopped working due to bug 43217 and persists after the bug fix.
Enabling trace+process debug option shows a call to create_process_impl (wine 3.0) instead of CreateProcessInternalW as before
https://bugs.winehq.org/show_bug.cgi?id=44393
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dark.shadow4@web.de
--- Comment #1 from Fabian Maurer dark.shadow4@web.de --- How does it work on windows? Or is that only relevant on linux?
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #2 from luca.cunegondi@ocme.com --- on windows it works fine. I forgot to mention that on linux the output of command goes to stdout (console) instead of pipe
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #3 from Fabian Maurer dark.shadow4@web.de --- Do you have a small example on how to reproduce the issue?
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #4 from luca.cunegondi@ocme.com --- (In reply to Fabian Maurer from comment #3)
Do you have a small example on how to reproduce the issue?
I don't know how to reproduce it because I have no access to the source code, but I can attach 2 screenshots of a working and not-working situations with output redirected to the console.
The program executes a find command directly to a pipe and draw the first line read from there. In the working example the output contains the entire list while in the other the output is sent to the console and the pipe is empty (END=OF-FILE)
I hope this could be useful enough
thank you very much
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #5 from luca.cunegondi@ocme.com --- Created attachment 60333 --> https://bugs.winehq.org/attachment.cgi?id=60333 screenshot of working example
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #6 from luca.cunegondi@ocme.com --- Created attachment 60334 --> https://bugs.winehq.org/attachment.cgi?id=60334 screenshot of not-working example
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #7 from Jeff Zaroyko jeffz@jeffz.name --- What's the name of the application? Is there a demo available that shows the problem?
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #8 from luca.cunegondi@ocme.com --- (In reply to Jeff Zaroyko from comment #7)
What's the name of the application? Is there a demo available that shows the problem?
It's PTC Creo Element Direct Drafting, formerly ME10. I don't know if there is a free demo version available because it's a commercial licensed program.
Can I enable more specific options?
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #9 from Fabian Maurer dark.shadow4@web.de --- How does this work on windows? That doesn't have unix binaries.
https://bugs.winehq.org/show_bug.cgi?id=44393
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #10 from Zebediah Figura z.figura12@gmail.com --- (In reply to Fabian Maurer from comment #9)
How does this work on windows? That doesn't have unix binaries.
As far as I can see this is a quirk of the application's syntax. This specific syntax doesn't even work in a Unix shell; a pipe in quotes is treated as just a pipe character.
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #11 from luca.cunegondi@ocme.com --- (In reply to Fabian Maurer from comment #9)
How does this work on windows? That doesn't have unix binaries.
on windows it works as expected executing both native commands and unix binaries through Cygwin, no matter
On Arch Linux it worked without any problem for me until version 2.17 (Wine) and 2.18 (Wine-staging). Bug described in 43217 broke correct detection of native executabes so any call to system commands returned with bad EXE format or not recognized command or batch file.
I don't know if this issue was introduced by thet bug but it seems strictly related Wine version 2.21 already had it, so what changed from 2.17 ?
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #12 from luca.cunegondi@ocme.com --- (In reply to Zebediah Figura from comment #10)
(In reply to Fabian Maurer from comment #9)
How does this work on windows? That doesn't have unix binaries.
As far as I can see this is a quirk of the application's syntax. This specific syntax doesn't even work in a Unix shell; a pipe in quotes is treated as just a pipe character.
yes of course, this is application specific and documented in the internal command reference.
"" If the first character of |string| is the bar character, the rest of |string| is taken to be a shell command. This allows you to pipe the output of a command to the standard input of a shell command, or vice versa, to use the output of a shell command as the input stream for a command.
""
The application version I'm running is always the same, before and after this issue
https://bugs.winehq.org/show_bug.cgi?id=44393
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jacek@codeweavers.com
--- Comment #13 from Jacek Caban jacek@codeweavers.com --- The problem is probably that we no longer have UNIX fd associated with named pipes, so we can't pass it to UNIX application. I think we could extend UNIX mode in start.exe to create new fds and pump data between named pipes and UNIX sockets. You could then use something like: | start /unix /usr/bin/ls /tmp |...
https://bugs.winehq.org/show_bug.cgi?id=44393
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #14 from luca.cunegondi@ocme.com --- (In reply to Jacek Caban from comment #13)
The problem is probably that we no longer have UNIX fd associated with named pipes, so we can't pass it to UNIX application. I think we could extend UNIX mode in start.exe to create new fds and pump data between named pipes and UNIX sockets. You could then use something like: | start /unix /usr/bin/ls /tmp |...
sorry for this (very) late reply but I still really interested in solving this issue. Until now (installed 3.17 of both Wine and Wine-staging on Arch Linux) the problem persists, so any kind of solution is really appreciated. Thank you very much and sorry again
https://bugs.winehq.org/show_bug.cgi?id=44393
Andrey andrey.gursky@e-mail.ua changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |andrey.gursky@e-mail.ua
https://bugs.winehq.org/show_bug.cgi?id=44393
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eb1+wine@sil.org
--- Comment #15 from Alexandre Julliard julliard@winehq.org --- *** Bug 48266 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=44393
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|cannot read form named pipe |Cannot read from a named |in wine 3.0 after bug fix |pipe in wine 3.0 |43217 |
https://bugs.winehq.org/show_bug.cgi?id=44393
--- Comment #16 from eb1+wine@sil.org --- Bug 48266 has a small demo program attached that will show the problem.