http://bugs.winehq.org/show_bug.cgi?id=22925
Summary: Hearts of Iron III - crashes on startup (-O0 vs -O2) Product: Wine Version: 1.1.38 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: wylda@volny.cz CC: julliard@winehq.org
Hearts of Iron III crashes on start up. This looks to me like a hidden bug covered by gcc optimizations (like when 1.1.44 was released). When using -O0 game crashes, but when -O2 is used game runs.
1. Use windowed mode (800x600) and follow installation HOW-TO http://appdb.winehq.org/objectManager.php?sClass=version&iId=17439
2. I did a regression test between 1.1.37 and 1.1.38:
commit 90f31aa3811ef3e9920796d51b8da748c15cff05 Author: Alexandre Julliard julliard@winehq.org Date: Wed Jan 27 13:35:32 2010 +0100
ntdll: Always enable tail checking when running under Valgrind.
:040000 040000 15de4799ed58f77fa6c6e72f01c6d0a7eefca3b1 8efe76a427789790a92e281130526a92068dc359 M dlls
3. No other bug report suffers from this commit.
4. Revert of this patch on top of wine-1.1.43-628 makes that problem go away. Since wine-1.1.43-629 (the one which broke 1.1.44, when -O0 was used) it's broken again and reverting no longer works.
5. Adding author of this patch to CC.
--private keyword: bisected
PS: This doesn't apply Hoi3 demo - is affected different way. In Hoi3 demo, you can test only -O0 and see, that reverting fixes the issue. In FULL game you don't need to revert, just use -O2 and it fixes the issue.
http://bugs.winehq.org/show_bug.cgi?id=22925
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, regression URL| |http://www.gamershell.com/n | |ews_81436.html
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #1 from Alexandre Julliard julliard@winehq.org 2010-05-29 10:45:41 --- Please try to narrow down which dll, then which file breaks when compiled with -O0.
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #2 from Wylda wylda@volny.cz 2010-05-29 11:27:38 --- (In reply to comment #1)
Please try to narrow down which dll, then which file breaks when compiled with -O0.
Gladly, but i will need at least a little help to do it right.
This link tells me, that only file which was changed is dlls/ntdll/heap.c: http://source.winehq.org/git/wine.git/?a=commit;h=90f31aa3811ef3e9920796d51b...
Final product is ntdll.dll.so, right?. So that's the dll you are talking about? And now i should compile each *.c file in dlls/ntdll/ with -O2, than touch one .c file and recompile just the one .c file with -O0 and see the difference?
* How do i do that? Something like make -C xyz.c ?? * Do i need to be in folder "wine-git" or "wine-git/dlls/ntdll/" ???
Thanks in advance.
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #3 from Vitaliy Margolen vitaliy@kievinfo.com 2010-05-29 12:15:19 --- AJ is talking about DLL as a whole (no need to compile individual files from each dll with -O0/-O2).
You can compile Wine with -O0, copy all dll.so files into safe place, recompile Wine with -O2. Then more one -O0 dll at a time into compile dir and test if your program still works.
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #4 from Wylda wylda@volny.cz 2010-05-29 15:09:31 ---
AJ is talking about DLL as a whole (no need to compile individual files from each dll with -O0/-O2).
Thanks Vitaliy! So because i won't revert anything i took this issue to 1.2-rc2.
1st scenario ============ * I took -O0 (crashing) and put into it ntdll.dll.so (from working -O2) => results -O0 no longer crash :-D
2nd scenario ============ * I took -O2 (working) and put into it ntdll.dll.so (from crashing -O0) => results -O2 still works. Isn't that weird?
As you can see, i wanted to double check that dll file, but apparently reciprocity doesn't work here. What do you suggest?
http://bugs.winehq.org/show_bug.cgi?id=22925
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |lukasz.wojnilowicz@gmail.co | |m
--- Comment #5 from Vitaliy Margolen vitaliy@kievinfo.com 2010-05-30 14:02:25 --- *** Bug 22951 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #6 from Vitaliy Margolen vitaliy@kievinfo.com 2010-05-30 14:05:22 --- This indicates a memory corruption somewhere. Unfortunately these bugs are hardest to find.
Can you enable heap checking and/or run this game under valgrind?
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #7 from Wylda wylda@volny.cz 2010-05-31 11:01:52 --- (In reply to comment #6)
This indicates a memory corruption somewhere.
OK, i don't fear of valgrind+heap+relay and i'm also patient, but unfortunately this combinations never brought me luck. I'll go ahead. It have to come one day ;)
But before, looking at comment #4 i think only 1st scenario makes sence (we want a working wine, not broken, right?). So is there a chance to take the .o file from -O2 and put that into -O0 tree and build ntdll.dll.so from them (how??). Then we know the file, right?
I still have a feeling ("speculation") there is something wrong with wine's build system. What was the reason, that .44 did not compile when -O0 was used, but -O2 work arounded. This had to be a bug in build system, hadn't be?
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #8 from Wylda wylda@volny.cz 2010-06-15 16:02:20 --- Created an attachment (id=28873) --> (http://bugs.winehq.org/attachment.cgi?id=28873) valgrind + wine-1.2-rc3
This is still a problem in 1.2-rc3. When clean source is compiled with -O0, game crashes on startup. When -O2 is used then the game runs normally.
I attached the valgrind log. If it needs also some debug channel, please tell me.
Or Alexandre, should i continue with replacing the .so files somehow further? Probably the "1st scenario" in comment #4 is valid - as we want to get wine working, not to find out how to make it crash (as "2nd scenario" is about).
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #9 from Wylda wylda@volny.cz 2010-06-19 23:16:50 ---
This is still a problem in 1.2-rc4. When clean source is compiled with -O0, game crashes on startup. When -O2 is used then the game runs normally.
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #10 from NSLW lukasz.wojnilowicz@gmail.com 2010-06-25 10:50:50 --- *** Bug 22938 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=22925
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nerv@dawncrow.de Regression SHA1| |90f31aa3811ef3e9920796d51b8 | |da748c15cff05
http://bugs.winehq.org/show_bug.cgi?id=22925
--- Comment #11 from NSLW lukasz.wojnilowicz@gmail.com 2011-09-04 02:28:23 CDT --- *** Bug 28266 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=22925
Mr Nobody limited_choice@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |limited_choice@hotmail.com
--- Comment #12 from Mr Nobody limited_choice@hotmail.com 2011-11-17 18:22:29 CST --- ...I'm beginning to think that both bugs 19698 & 19979 are related here. As I just noted in the former, it seems providing & setting dsound=native seems to have some sway on the crashing behavior -- without such I reliably see a crash in ntdll at the 'creating world' part of the game loadup...
http://bugs.winehq.org/show_bug.cgi?id=22925
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1|90f31aa3811ef3e9920796d51b8 | |da748c15cff05 |
--- Comment #13 from Alexandre Julliard julliard@winehq.org 2012-02-21 05:44:40 CST --- The demo works better with -O0 here, but no crashes either way. I don't think it has anything to do with that commit anyway.
http://bugs.winehq.org/show_bug.cgi?id=22925
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|regression | Status|UNCONFIRMED |RESOLVED Resolution| |INVALID Summary|Hearts of Iron III - |Hearts of Iron III demo - |crashes on startup (-O0 vs |crashes on startup (-O0 vs |-O2) |-O2)
--- Comment #14 from Wylda wylda@volny.cz 2012-05-06 14:57:23 CDT --- (In reply to comment #13)
I don't think it has anything to do with that commit anyway.
Hi Alexandre, i did some re-test with the demo and full game, but to make it less confusing i change the subj, so this bug will be just about demo version.
It still happens to me. Demo crashes immediately when running -O0 and with -O2 i can enter the game and see it's menu. Just in case someone with more knowledge than me would like to look at it, i provide step by step i did today & wine-1.5.3.
I changed the steps compared to AppDB, because it can be simpler (no need for .Net in case of demo, full DirectX...):
1) I compiled wine-1.5.3 once with -O0 and in another dir once again with -O2
2) I installed the Hoi 3 demo
3) I manually took vcomp.dll (md5: 73dbaa64d589f3262615550dd6881fee) + it's OpenMP manifest file from vcrun2005sp1 (2011-06-07), put them into appropriate /windows/winsxs/...
4) I copied from Directx Jun2010 d3dx9_36.dll (md5: 44bfec5c9c82a2ee9871d88fd3b9a0e2) into /windows/system32
5) I copied from Directx Feb2010 quartz.dll (md5: 6b6e934bee7aa98a5eed62c6c8506612) into /windows/system32. It's interesting, that latest quartz.dll from fully patched WinXP doesn't work at all and crashes immediately, thus i used Feb2010's.
6) Set in winecfg d3dx9_36 + quartz + vcomp to native.
7) Set windowed mode 800x600 in winecfg
8) wine regsvr32 quartz.dll
9) HKCU/Software/Wine/DirectSound/MaxShadowSize to "0"
10) Try running wine hoi3.exe compiled with -O0 and then -O2.
For me, -O0 crashes immediately and -O2 runs fine. The code is same so this shouldn’t be regression, it's all pretty fragile for regression testing and i don't have deeper knowledge to process this further. Let's mark it as invalid, if anyone would be interested, feel free to reopen - recipe above.
http://bugs.winehq.org/show_bug.cgi?id=22925
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #15 from Wylda wylda@volny.cz 2012-05-20 14:57:42 CDT ---
Forgot to close.