New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Teardown (1167630) #4332
Comments
This happens to me as well, except it's not on loading a level. It seems to be either random, or happening within a time frame. I spent a lot of time checking out the Löckelle compound, and crashed before I was even able to get to the first level. The second time I went as fast as I could, and was able to play the first level for about 30 seconds before crashing. |
I played for about an hour, and crashes definitely only happened during loading for me. Could you create a proton log so we can compare and see if the Backtraces are similar? @SirNapkin1334 |
i've only had one crash so far, but sometimes the audio completely stops working until i restart the game. anyone else experience this? |
@JonathanBrouwer Same crashing on level loading happens on my laptop, which has RTX 2070, but it doesn't happen on my desktop with a GTX 1060. Both are running Arch. |
@ashirviskas Crashing is probably not related to GPUs. What is the rest of the specs? CPU, RAM? I also have desktop with GTX 1060, 28GB RAM and slightly overclocked i5 2500K. Running Fedora 32. So far from what I can gather, it is sorta coin flip on whether the loading screen crashes or not. Because I don't think the crashing gets worse the longer you play (like a leak), but it is just game of chance that you eventually lose and your "winning" (not crashing) streak is over. From what I have seen it is just as likely to crash on 1st one as is on 10th loading screen. Obviously, the chance you get to see 10 loading screens in a row is quite low. But given your success with the desktop, maybe it is possible to get better chances with specific setup? |
@Solitary I've played like 5+ hours on my desktop with 0 crashes. My specs on non-crashing machine are:
Crashing laptop:
Any idea what could it be? |
@ashirviskas I can point out similarities, CPU vendor and gfx driver version. Also possibly kernel, mine and your laptop are both newer than your desktop. My game is running from SSD. My specs are:
|
@Solitary |
@ashirviskas |
On protondb, someone suggested to add this launch command: |
I personally have played ~2 hours, with no crash either. Anyways here are my specs so you guys can compare:
|
I encounter crashes on level loads and sometimes in levels, when playing. Adding the
|
For me it crashes the entire system in the third level (Marina) after a while. I am running 20.2.1-1 on kernel 5.9.3-arch1-1 using a radeon rx5700xt. I already reported kernel crashes on mesa and amdgpu bugtrackers. Looks lile the radeonsi opengl driver is messing something up. Tried a couple of different kernels 4.19, 5.4, 5.8 all crash with similar issues. |
Is anyone aware, how I can capture e.g. an apitrace, to help the radeonsi developers reproduce the issue? |
I can confirm that it does help with constant crashing. Did multiple reloads during a long mission without crashing, but I also did end up losing sound on the last reload (luckily it was actually the last one before I finished a long level), but I can't confirm whether the loss of sound would otherwise result in a crash. I did successfully reload more times than ever before, which maybe means it is different issue? Hard to tell, needs more testing. Adding log from the play session, I exited the game cleanly through main menu. |
Yep, can confirm the loss of sound with |
To make particle effects like fire work on amd GPU driver: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3714#note_682885 |
Thanks, works great ! |
I've also been game crashes, but much more catastrophic. Instead of just the game crashing, it seems to crash the X server as well. This crash mainly happens during general gameplay. I haven't experienced any of these crashes that happen during loadfing that others are reporting. I'm no Linux wizard, and am certainly not a troubleshooting genius, but figured I should say that its an issue I'm having. |
This is probably a bug in the radeonsi driver: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3714 As a workaround, launch the game with Additionally set |
Regarding the fix for missing particles, that has worked, thanks. EDIT: I have found a workaround that works for me: |
Morning/evening. The issue aswell affects computers with AMD graphics card and a processor. We both have SSD so that may be the issue somehow.
|
The game is crashing after the "Warning / Press any key to continue" splash screen since version 0.6 (Steam Workshop Update). proton-5.13-6 I also found this Steam Community discussion of a Nvidia GTX 1650 SUPER user having the same issue. I tried other Proton versions and Launch options to no success. |
Hello @Friz64, these look like lines of interest from the log:
Looks like 302e5d9 2f63954 in Proton experimental-5.13-20210302 can help with that. Please test the game with the current Proton Experimental build. |
That fixed it, thank you so much! |
Game works well up until it crashes, which can take 30m or pretty short after loading a level. Edit: |
even with those arguments, i still get frequent crashes. it make s significant improvement though. |
Had the game running successfully for a long time with all the environment variables from here. Unfortunately it stopped working, now it crashes every time, when something in the game should explode (gas tanks etc...). This started with a game update. Here is a log of the crash: https://gist.github.com/ruabmbua/bc988e72310aa922e95bc72fb2f7e87b Nothing suspicious in dmesg, seems like a straightforward segmentation fault from the game binary itself. |
I think I've figured out the source of this issue, but I'm not quite sure how to fix it. The crash is happening on a thread which seems to be handling Teardown's audio, and is happening when the callback passed to The part I'm not sure about is whether or not it's valid for that callback to be called reentrantly; evidently, Teardown assumes it isn't, but it might just be a coincidence that it never does on Windows. I don't really know anything about (Also, this explains the report of audio cutting out, if this is the thread which crashes.) Here's the relay trace of the end of the run (with added indentation and comments): // This is what a normal invocation of the callback looks like; acquires some locks, does some stuff, and releases them. 0128:trace:driver:DriverCallback (40256DA0, 32bit function 0003, 000000000000FF00, 03BD, 00000000, 005E0148, 00000000) 0128:Call ntdll.RtlAcquireSRWLockExclusive(005e0068) ret=140270d41 0128:Ret ntdll.RtlAcquireSRWLockExclusive() retval=00000001 ret=140270d41 0128:Call ntdll.RtlAcquireSRWLockExclusive(003b03d0) ret=140270d41 0128:Ret ntdll.RtlAcquireSRWLockExclusive() retval=00000001 ret=140270d41 0128:Call ntdll.RtlReleaseSRWLockExclusive(003b03d0) ret=1402710a0 0128:Ret ntdll.RtlReleaseSRWLockExclusive() retval=ffffffff ret=1402710a0 0128:Call winmm.waveOutWrite(0000ff00,005e0148,00000030) ret=140256d79 0128:trace:winmm:waveOutWrite (000000000000FF00, 00000000005E0148, 48) 0128:trace:winmm:waveOutWrite dwBufferLength: 4096 0128:trace:winmm:WINMM_BeginPlaying (000000000000FF00) 0128:trace:winmm:WOD_PushData (000000000000FF00) 0128:Call ucrtbase.memcpy(02c829f0,005e3178,00001000) ret=3b8f16e5d 0128:Ret ucrtbase.memcpy() retval=02c829f0 ret=3b8f16e5d 0128:Ret winmm.waveOutWrite() retval=00000000 ret=140256d79 0128:Call ntdll.RtlReleaseSRWLockExclusive(005e0068) ret=1402710a0 0128:Ret ntdll.RtlReleaseSRWLockExclusive() retval=ffffffff ret=1402710a0 // End of normal invocation. 0128:trace:driver:DriverCallback Done 0128:Call user32.MsgWaitForMultipleObjects(00000001,02b70690,00000000,ffffffff,3000004ff) ret=3b8f172f3 0128:Call ntdll.NtWaitForMultipleObjects(00000002,02b2f480,00000001,00000000,00000000) ret=7b06de8a 0128:Ret ntdll.NtWaitForMultipleObjects() retval=00000000 ret=7b06de8a 0128:Ret user32.MsgWaitForMultipleObjects() retval=00000000 ret=3b8f172f3 0128:trace:winmm:WOD_PushData (000000000000FF00) 0128:Call user32.MsgWaitForMultipleObjects(00000001,02b70690,00000000,ffffffff,3000004ff) ret=3b8f172f3 0128:Call ntdll.NtWaitForMultipleObjects(00000002,02b2f480,00000001,00000000,00000000) ret=7b06de8a 0128:Ret ntdll.NtWaitForMultipleObjects() retval=00000000 ret=7b06de8a 0128:Ret user32.MsgWaitForMultipleObjects() retval=00000000 ret=3b8f172f3 0128:trace:winmm:WOD_PushData (000000000000FF00) // Start of invocation which causes crash. 0128:trace:driver:DriverCallback (40256DA0, 32bit function 0003, 000000000000FF00, 03BD, 00000000, 005E00B8, 00000000) 0128:Call ntdll.RtlAcquireSRWLockExclusive(005e0068) ret=140270d41 0128:Ret ntdll.RtlAcquireSRWLockExclusive() retval=00000001 ret=140270d41 0128:Call ntdll.RtlAcquireSRWLockExclusive(003b03d0) ret=140270d41 0128:Ret ntdll.RtlAcquireSRWLockExclusive() retval=00000001 ret=140270d41 0128:Call ntdll.RtlReleaseSRWLockExclusive(003b03d0) ret=1402710a0 0128:Ret ntdll.RtlReleaseSRWLockExclusive() retval=ffffffff ret=1402710a0 0128:Call winmm.waveOutWrite(0000ff00,005e00b8,00000030) ret=140256d79 0128:trace:winmm:waveOutWrite (000000000000FF00, 00000000005E00B8, 48) 0128:trace:winmm:waveOutWrite dwBufferLength: 4096 0128:trace:winmm:WINMM_BeginPlaying (000000000000FF00) 0128:trace:winmm:WOD_PushData (000000000000FF00) 0128:Call ucrtbase.memcpy(02c839f0,005e0178,00001000) ret=3b8f16e5d 0128:Ret ucrtbase.memcpy() retval=02c839f0 ret=3b8f16e5d // Start of reentrant callback. 0128:trace:driver:DriverCallback (40256DA0, 32bit function 0003, 000000000000FF00, 03BD, 00000000, 005E00E8, 00000000) // This is immediately different; literally every other invocation of the callback starts by calling ntdll.RtlAcquireSRWLockExclusive. 0128:Call ntdll.RtlAllocateHeap(00140000,00000000,00000020) ret=1402cceb4 0128:Ret ntdll.RtlAllocateHeap() retval=02b70710 ret=1402cceb4 0128:Call ntdll.RtlAllocateHeap(00140000,00000000,00000020) ret=1402cceb4 0128:Ret ntdll.RtlAllocateHeap() retval=02b70750 ret=1402cceb4 0128:Call ntdll.RtlAllocateHeap(00140000,00000000,00000020) ret=1402cceb4 0128:Ret ntdll.RtlAllocateHeap() retval=02b70790 ret=1402cceb4 0128:Call ntdll.RtlAllocateHeap(00140000,00000000,00000040) ret=1402cceb4 0128:Ret ntdll.RtlAllocateHeap() retval=02bd07d0 ret=1402cceb4 0128:Call KERNEL32.HeapFree(00140000,00000000,02b70750) ret=1402cc7a8 0128:Ret KERNEL32.HeapFree() retval=00000001 ret=1402cc7a8 0128:Call KERNEL32.HeapFree(00140000,00000000,02b70790) ret=1402cc7a8 0128:Ret KERNEL32.HeapFree() retval=00000001 ret=1402cc7a8 0128:Call ntdll.RtlAllocateHeap(00140000,00000000,00000031) ret=1402cceb4 0128:Ret ntdll.RtlAllocateHeap() retval=02bd0830 ret=1402cceb4 0128:Call KERNEL32.HeapFree(00140000,00000000,02bd07d0) ret=1402cc7a8 0128:Ret KERNEL32.HeapFree() retval=00000001 ret=1402cc7a8 0128:Call KERNEL32.HeapFree(00140000,00000000,02b70710) ret=1402cc7a8 0128:Ret KERNEL32.HeapFree() retval=00000001 ret=1402cc7a8 0128:Call ntdll.RtlPcToFileHeader(140428b30,02b2f790) ret=1402776bb 0128:Ret ntdll.RtlPcToFileHeader() retval=140000000 ret=1402776bb // And then it throws an exception, causing the crash. 0128:Call KERNEL32.RaiseException(e06d7363,00000001,00000004,02b2f750) ret=1402776fa I captured the log with |
I don't know whether this applies to @ruabmbua's issue, I haven't been experiencing it. |
I think I've managed to solve this on https://github.com/Liamolucko/wine/tree/winmm-no-reentrancy. |
Hello @Liamolucko, when you're happy with your patches, please send them to wine's mailing list for review and integration into upstream wine, then make a merge request for them to be cherry picked into Proton's variant of wine. |
…without getting called reentrantly. This behaviour is relied upon by Teardown, see ValveSoftware/Proton#4332. Signed-off-by: Liam Murphy <liampm32@gmail.com>
…Write` without getting called reentrantly. This behaviour is relied upon by Teardown, see ValveSoftware/Proton#4332. Signed-off-by: Liam Murphy <liampm32@gmail.com>
…Write` without getting called reentrantly. This behaviour is relied upon by Teardown, see ValveSoftware/Proton#4332. Signed-off-by: Liam Murphy <liampm32@gmail.com>
…Write` without getting called reentrantly. This behaviour is relied upon by Teardown, see ValveSoftware/Proton#4332. Signed-off-by: Liam Murphy <liampm32@gmail.com> --- v2: Add `todo_wine` to avoid test failure --- v3: Use block comments instead of line comments
…Write` without getting called reentrantly. This behaviour is relied upon by Teardown, see ValveSoftware/Proton#4332. Signed-off-by: Liam Murphy <liampm32@gmail.com> --- v2: Add `todo_wine` to avoid test failure --- v3: Use block comments instead of line comments --- v4: Simplify test
The fix is included in Wine 7.1, so this should be fixed once Proton updates to it. In the meantime, Proton-GE has already updated, so it's fixed there. |
Still crashing for me with Proton-GE updated. Probably a different issue then? I have to get into proton debugging, I have no experience with it. |
When looking at my logs, its rather weird, that the crashing instruction is at 0x00007fa510fc9878, which is apparently not even inside the memory map, according to the crash dump. The closest module is winepulse, but at a slightly higher address... |
Compatibility Report
System Information
I confirm:
Proton log:
steam-1167630.log
Std error:
Std error
Symptoms
The game works perfectly (better performance than on windows btw), except when I load a level there is about a 10% chance the game will crash. The log file above contains the crash report.
Reproduces on proton 5.13-1 and proton 5.0-9. Does not reproduce on Windows 10.
Reproduction
The text was updated successfully, but these errors were encountered: