http://bugs.winehq.org/show_bug.cgi?id=33189
Bug #: 33189 Summary: wineconsole can't launch batch filenames with parenthesis Product: Wine Version: 1.5.24 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: cmd AssignedTo: wine-bugs@winehq.org ReportedBy: jeromepoulin@gmail.com Classification: Unclassified
If you launch a batch file which has a parenthesis in its filename, you get an infinite loop.
I'm currently using ArchLinux.
=== How to reproduce === mkdir -p "$HOME/a" echo -n -e "@echo off\r\nnotepad.exe\r\n" > "$HOME/a/test(123).bat" wineconsole "$HOME/a/test(123).bat"
I'm also using Ubuntu with wine 1.4.1 which does not have this behaviour, they may have fixed it as I had it before Ubuntu Raring, on Precise, maybe they have a patch already.
http://bugs.winehq.org/show_bug.cgi?id=33189
--- Comment #1 from Jérôme Poulin jeromepoulin@gmail.com 2013-03-11 20:04:11 CDT --- This can also be reproduced inside cmd.exe echo notepad > test(123).bat test(123).bat (infinite loop)
http://bugs.winehq.org/show_bug.cgi?id=33189
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, regression Status|UNCONFIRMED |NEW CC| |us@edmeades.me.uk Ever Confirmed|0 |1 Regression SHA1| |dccccfc27341c2b156fa14c58de | |2c19cb41b486d
--- Comment #2 from Austin English austinenglish@gmail.com 2013-03-11 22:40:41 CDT --- Confirming. It's a regression, introduced by: austin@aw25 ~/wine-rt $ git bisect good dccccfc27341c2b156fa14c58de2c19cb41b486d is the first bad commit commit dccccfc27341c2b156fa14c58de2c19cb41b486d Author: Jason Edmeades jason@edmeades.me.uk Date: Tue Oct 16 23:35:33 2012 +0100
cmd: Handle very odd delimiter support for command line.
:040000 040000 41288f7cf0a4c1af5a614bcffc38eb8771fa8261 1d1fc2498b598b5f66fb7cf4a3cf5cd2666a9932 M programs
http://bugs.winehq.org/show_bug.cgi?id=33189
--- Comment #3 from Jérôme Poulin jeromepoulin@gmail.com 2013-03-11 23:26:20 CDT --- That makes sense as I was using wine1.5 PPA in Ubuntu Precise now that I remember.
http://bugs.winehq.org/show_bug.cgi?id=33189
Jason Edmeades us@edmeades.me.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|wine-bugs@winehq.org |us@edmeades.me.uk
--- Comment #4 from Jason Edmeades us@edmeades.me.uk 2013-03-12 15:12:24 CDT --- Thanks - I'll take a look asap
http://bugs.winehq.org/show_bug.cgi?id=33189
Jason Edmeades us@edmeades.me.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED
--- Comment #5 from Jason Edmeades us@edmeades.me.uk 2013-03-14 16:06:02 CDT --- So on windows part of this isnt valid (I appreciate the infinite loop is a bug)
E:\VMShared\test>echo notepad > test(123).bat E:\VMShared\test>test(123).bat 'test' is not recognized as an internal or external command, operable program or batch file.
To run it, you need to quote it
E:\VMShared\test>"test(123)" E:\VMShared\test>notepad E:\VMShared\test>"test(123).bat" E:\VMShared\test>notepad
So whilst the infinite loop bit needs fixing, please be aware that I am not convinced it should actually work, which leads me onto the next question for Jerome - What batch file are you using that fails and what is its exact syntax (and does it work on windows?)
http://bugs.winehq.org/show_bug.cgi?id=33189
--- Comment #6 from Jason Edmeades us@edmeades.me.uk 2013-03-14 16:11:26 CDT --- Also, for reference, things arent quite so bad on Linux either:
Z:\mnt\sf_wine\test>"test(123)" Z:\mnt\sf_wine\test>notepad Z:\mnt\sf_wine\test>"test(123).bat" Z:\mnt\sf_wine\test>notepad Z:\mnt\sf_wine\test>test(123) Can't recognise 'test(123)' as an internal or external command, or batch script. Z:\mnt\sf_wine\test>test(123).bat <infinite loop>
http://bugs.winehq.org/show_bug.cgi?id=33189
--- Comment #7 from Jérôme Poulin jeromepoulin@gmail.com 2013-03-14 16:32:36 CDT --- The real problem I was experiencing was the "wineconsole" problem, the "cmd" side of the bug is just an extra. I can't over quote a batch file enough to get wineconsole to execute the batch file if the path contains a pair of parenthesis.
http://bugs.winehq.org/show_bug.cgi?id=33189
--- Comment #8 from Jason Edmeades us@edmeades.me.uk 2013-03-14 17:01:17 CDT --- Ok, so there's two related issues here. The first is that attempting to run a batch program with a parenthesis in the name causes an infinte loop, the next is how do you run it e.g. through wineconsole.
The root cause of the infinite loop is a patch we needed back in 2007 (added by me... http://www.winehq.org/pipermail/wine-patches/2007-April/037866.html ) because internal exe's did not have entries in the wine tree, hence could not be located (in that case, xcopy). This has long since been fixed so I believe all the 'assumeIntenal' code in wcmdmain is redundant. However in this case, wine 'cleverly' now parses the filename into test, locates it and cannot find it, then has one last attempt by spawning "cmd.exe /c test(123).bat", getting into its loop.
I believe the right answer is to delete all the assumeInternal code - if it isnt found, it isnt there! I am slightly nervous about removing this just in case there's any scenario I have missed, but certainly the reason it was added is no longer a problem.
If you build from source, change line 1176, the assignment of assumeInternal, to false, ie on the line following "WINE_TRACE("ASSUMING INTERNAL\n");" change to "assumeInternal = FALSE;"
This removes the infinite loop, but does not solve the wineconsole issue - ie I think the core cmd.exe then is correct but leaves your question. Let me have a play
http://bugs.winehq.org/show_bug.cgi?id=33189
--- Comment #9 from Jason Edmeades us@edmeades.me.uk 2013-06-04 16:17:48 CDT --- Finally tidied up the patch and submitted it http://www.winehq.org/pipermail/wine-patches/2013-June/124605.html
This avoids the infinite loop but I cannot work out how you solve the wineconsole part. The problem is there's no real equivalent in windows, and the closest I can get would be on windows you need either of the following to launch it "test(123).bat" cmd /c ""test(123).bat""
I suspect this may end up being a limitation in wineconsole unless anyone has any bright ideas, but I'd like to use this bug to address the regression / infinite loop reported as that is bad news.
http://bugs.winehq.org/show_bug.cgi?id=33189
Jason Edmeades us@edmeades.me.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |dd0b719a3a1419f34774fc4cd92 | |1f3378d8c237b Status|ASSIGNED |RESOLVED Resolution| |FIXED
--- Comment #10 from Jason Edmeades us@edmeades.me.uk 2013-06-05 15:14:07 CDT --- Committed
http://bugs.winehq.org/show_bug.cgi?id=33189
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2013-06-07 15:00:25 CDT --- Closing bugs fixed in 1.6-rc1.