https://bugs.winehq.org/show_bug.cgi?id=51358
Bug ID: 51358 Summary: Civilization 4: XML load error when trying to start Product: Wine Version: 6.11 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: trekie96@hotmail.com Distribution: ---
When trying to start a fresh install of Civilization 4 I'm getting XML load errors and the game doesn't start.
"Failed Loading XML file Assets//XML\GameInfo/CIV4PlayerOptionInfos.xml" "LoadXML call failed for GameInfo/CIV4PlayerOptionInfos.xml"
https://bugs.winehq.org/show_bug.cgi?id=51358
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEEDINFO Ever confirmed|0 |1
--- Comment #1 from Gijs Vermeulen gijsvrm@gmail.com --- Could you attach the full terminal output? See: https://wiki.winehq.org/FAQ#How_can_I_get_a_debugging_log_.28a.k.a._terminal...
What version of the game are you using? (CD, Steam, GOG, ...)
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #2 from Matthew matthewehr@hotmail.com --- Created attachment 70366 --> https://bugs.winehq.org/attachment.cgi?id=70366 Terminal output
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #3 from Matthew matthewehr@hotmail.com --- (In reply to Gijs Vermeulen from comment #1)
Could you attach the full terminal output? See: https://wiki.winehq.org/FAQ#How_can_I_get_a_debugging_log_.28a.k.a. _terminal_output.29.3F
What version of the game are you using? (CD, Steam, GOG, ...)
I'm using the GOG version. I've just attached the terminal output. And this issue is still happening with wine 6.13.
https://bugs.winehq.org/show_bug.cgi?id=51358
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |damjan.jov@gmail.com
--- Comment #4 from Damjan Jovanovic damjan.jov@gmail.com --- Created attachment 70403 --> https://bugs.winehq.org/attachment.cgi?id=70403 fix the regex quantifier format in datatypes.xsd
Please try this patch. Also please attach a +msxml trace, whether it works or not, I'd like to see why our tests haven't caught this bug.
I think our XDR schema validation is broken, as dlls/msxml/datatypes.xsd has regex quantifiers that are invalid as per https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#dt-quanti... and break libxml2:
"Note: The regular expression language in the Perl Programming Language [Perl] does not include a quantifier of the form S{,m}, since it is logically equivalent to S{0,m}. We have, therefore, left this logical possibility out of the regular expression language defined by this specification."
We should be using eg. "{0,14}" instead of "{,14}" in the XSD "pattern" attribute values. Luckily those 2 lines in my patch should be all that needs fixing.
I am very familiar with that libxml2 regex error message from bugs #29685 and #43581.
https://bugs.winehq.org/show_bug.cgi?id=51358
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |amartinson@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #5 from Gijs Vermeulen gijsvrm@gmail.com --- Created attachment 70405 --> https://bugs.winehq.org/attachment.cgi?id=70405 output
I tested the complete edition from GOG and couldn't reproduce the failures with wine-6.14. Attached is my terminal output, I didn't test/need the patch.
What libxml2 version are you using? I'm running 2.9.10.
https://bugs.winehq.org/show_bug.cgi?id=51358
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch, testcase Component|-unknown |msxml3
--- Comment #6 from Damjan Jovanovic damjan.jov@gmail.com --- $ touch /tmp/z.xml
---------------- libxml2 2.9.10: ---------------- $ xmllint --schema datatypes.xsd /tmp/z.xml /tmp/z.xml:1: parser error : Document is empty
^
---------------- libxml2 2.9.12: ---------------- $ xmllint --schema datatypes.xsd /tmp/z.xml regexp error : failed to compile: Improper quantifier regexp error : failed to compile: xmlFAParseRegExp: extra characters datatypes.xsd:203: element pattern: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema%7Dpattern': The value '([0-9]{,14})([.][0-9]{,4})?' of the facet 'pattern' is not a valid regular expression. regexp error : failed to compile: Improper quantifier regexp error : failed to compile: xmlFAParseAtom: expecting ')' regexp error : failed to compile: xmlFAParseRegExp: extra characters datatypes.xsd:542: element pattern: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema%7Dpattern': The value '([0-9A-Fa-f]{4})([-]{,1}[0-9A-Fa-f]{4})*' of the facet 'pattern' is not a valid regular expression. WXS schema datatypes.xsd failed to compile /tmp/z.xml:1: parser error : Document is empty
^
I think it's this libxml2 commit that made the quantifier check stricter, disallowing "S{,m}":
---snip--- commit f8329fdc234a43b858271acc75ea70881e35fcae Author: Nick Wellnhofer wellnhofer@aevum.de Date: Thu Jul 2 11:51:31 2020 +0200
Report error for invalid regexp quantifiers
diff --git a/xmlregexp.c b/xmlregexp.c index 0272dcab..687290e2 100644 --- a/xmlregexp.c +++ b/xmlregexp.c @@ -5268,6 +5268,9 @@ xmlFAParseQuantifier(xmlRegParserCtxtPtr ctxt) { cur = xmlFAParseQuantExact(ctxt); if (cur >= 0) min = cur; + else { + ERROR("Improper quantifier"); + } if (CUR == ',') { NEXT; if (CUR == '}') ---snip---
The first release of libxml2 it appeared in is 2.9.11.
S{,m} quantifiers do not work in Java, .NET, or even MSXML on Windows itself.
Therefore my patch is correct. Submitted: https://source.winehq.org/patches/data/210930
https://bugs.winehq.org/show_bug.cgi?id=51358
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEEDINFO |NEW
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #7 from Matthew matthewehr@hotmail.com --- I'm using libxml 2.9.12 so it does look like that's the issue, do you still need me to try the patch? I'm not sure how to do it but I can try and find out.
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #8 from Damjan Jovanovic damjan.jov@gmail.com --- (In reply to Matthew from comment #7)
I'm using libxml 2.9.12 so it does look like that's the issue, do you still need me to try the patch? I'm not sure how to do it but I can try and find out.
You would build Wine from source: https://wiki.winehq.org/Building_Biarch_Wine_On_Ubuntu#Patching https://wiki.winehq.org/Building_Wine
It may be easier to wait for Wine 6.15, which should be out next Friday. Hopefully my patch will make it into that release, from where you can just test with the pre-built Wine binaries from your Linux distro's package repository.
https://bugs.winehq.org/show_bug.cgi?id=51358
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED Fixed by SHA1| |53f3cad7fbb19b489419afae4e1 | |e73486384f98d
--- Comment #9 from Damjan Jovanovic damjan.jov@gmail.com --- Patch committed, resolving fixed.
Please re-test with Wine 6.15 when it gets released later today, and report back.
https://bugs.winehq.org/show_bug.cgi?id=51358
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #10 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.15.
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #11 from Matthew matthewehr@hotmail.com --- Sorry for the late comment but I had to wait for OpenSuse to update wine. I can confirm the fix did work, Civ 4 runs now. Thank you for the fix!
https://bugs.winehq.org/show_bug.cgi?id=51358
--- Comment #12 from Damjan Jovanovic damjan.jov@gmail.com --- (In reply to Matthew from comment #11)
Sorry for the late comment but I had to wait for OpenSuse to update wine. I can confirm the fix did work, Civ 4 runs now. Thank you for the fix!
Great :). It's a pleasure.
https://bugs.winehq.org/show_bug.cgi?id=51358
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0.x
https://bugs.winehq.org/show_bug.cgi?id=51358
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|6.0.x |---
--- Comment #13 from Michael Stefaniuc mstefani@winehq.org --- Removing the 6.0.x milestone from bug fixes included in 6.0.3.