ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.28k stars 1.06k forks source link

Dragon Quest Builders 2 (1072420) #3309

Open wonhyo opened 4 years ago

wonhyo commented 4 years ago

Compatibility Report

System Information

I confirm:

Symptoms

Game do not run

Reproduction

Run The Game

awsdert commented 3 years ago

I'm finding it only happens when it appears to be autosaving, seems previous attempts succeed at autosaving but fail to close their threads or something, either way it's hitting a situation where it's waiting for something to succeed

awsdert commented 3 years ago

I've noticed there was an update this morning, so far no crashes but that may in part be because I got used to circumventing it by manually saving frequently, I'll have time on wed to do a stress test by playing for a number of hours without saving

awsdert commented 3 years ago

Nope, didn't resolve it, just had a crash after a session of about 2 hours play, here's the link to the log (68.5MB): https://drive.google.com/file/d/1HR6BQBLONj7nJedxfmlQXA_TRxAzSU9q/view?usp=sharing

Edit: When I looked at the bottom of the log it mentioned something about NtSetInfomationThread, here's the last few lines of the file:

``` 6494.137:00ec:0194:trace:seh:NtSetInformationThread (0x9954,3,0xf5b3df73c,4) 6494.137:00ec:0244:trace:seh:dispatch_exception code=406d1388 flags=0 addr=000000007B01193E ip=7b01193e tid=0244 6494.137:00ec:0244:trace:seh:dispatch_exception info[0]=0000000000001000 6494.137:00ec:0244:trace:seh:dispatch_exception info[1]=000000001b6291a0 6494.137:00ec:0244:trace:seh:dispatch_exception info[2]=00000000ffffffff 6494.137:00ec:0244:trace:seh:dispatch_exception rax=000000005badfd40 rbx=000000001b629198 rcx=000000005badfd20 rdx=0000000000000000 6494.137:00ec:0244:trace:seh:dispatch_exception rsi=000000005badfe18 rdi=000000005badfd58 rbp=0000000000000000 rsp=000000005badfd00 6494.137:00ec:0244:trace:seh:dispatch_exception r8=0000000000000003 r9=000000005badfe00 r10=000000004955e8dd r11=0000000072eb0000 6494.137:00ec:0244:trace:seh:dispatch_exception r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000 6494.137:00ec:0244:trace:seh:call_vectored_handlers calling handler at 0000000069060A10 code=406d1388 flags=0 6494.137:00ec:0244:trace:seh:call_vectored_handlers handler at 0000000069060A10 returned ffffffff 6494.137:00ec:0194:trace:seh:NtSetInformationThread (0x997c,3,0xf5b3df73c,4) 6494.137:00ec:0248:trace:seh:dispatch_exception code=406d1388 flags=0 addr=000000007B01193E ip=7b01193e tid=0248 6494.137:00ec:0248:trace:seh:dispatch_exception info[0]=0000000000001000 6494.137:00ec:0248:trace:seh:dispatch_exception info[1]=000000001b629280 6494.137:00ec:0248:trace:seh:dispatch_exception info[2]=00000000ffffffff 6494.137:00ec:0248:trace:seh:dispatch_exception rax=00000000dbaefd40 rbx=000000001b629278 rcx=00000000dbaefd20 rdx=0000000000000000 6494.137:00ec:0248:trace:seh:dispatch_exception rsi=00000000dbaefe18 rdi=00000000dbaefd58 rbp=0000000000000000 rsp=00000000dbaefd00 6494.137:00ec:0248:trace:seh:dispatch_exception r8=0000000000000003 r9=00000000dbaefe00 r10=000000004955e8dd r11=0000000072ab0000 6494.137:00ec:0248:trace:seh:dispatch_exception r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000 6494.137:00ec:0248:trace:seh:call_vectored_handlers calling handler at 0000000069060A10 code=406d1388 flags=0 6494.137:00ec:0248:trace:seh:call_vectored_handlers handler at 0000000069060A10 returned ffffffff 6494.137:00ec:0194:trace:seh:NtSetInformationThread (0x9988,3,0xf5b3df73c,4) 6494.138:00ec:024c:trace:seh:dispatch_exception code=406d1388 flags=0 addr=000000007B01193E ip=7b01193e tid=024c 6494.138:00ec:024c:trace:seh:dispatch_exception info[0]=0000000000001000 6494.138:00ec:024c:trace:seh:dispatch_exception info[1]=000000001b629360 6494.138:00ec:024c:trace:seh:dispatch_exception info[2]=00000000ffffffff 6494.138:00ec:024c:trace:seh:dispatch_exception rax=000000005baffd40 rbx=000000001b629358 rcx=000000005baffd20 rdx=0000000000000000 6494.138:00ec:024c:trace:seh:dispatch_exception rsi=000000005baffe18 rdi=000000005baffd58 rbp=0000000000000000 rsp=000000005baffd00 6494.138:00ec:024c:trace:seh:dispatch_exception r8=0000000000000003 r9=000000005baffe00 r10=000000004955e8dd r11=0000000074eb0000 6494.138:00ec:024c:trace:seh:dispatch_exception r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000 6494.138:00ec:024c:trace:seh:call_vectored_handlers calling handler at 0000000069060A10 code=406d1388 flags=0 6494.138:00ec:024c:trace:seh:call_vectored_handlers handler at 0000000069060A10 returned ffffffff 6494.138:00ec:0194:trace:seh:NtSetInformationThread (0x9990,3,0xf5b3df73c,4) ```

awsdert commented 3 years ago

Latest update didn't solve it either, I had things to do for a couple of hours so after booting the game to just the title screen I left it running with the monitor off, came back to find it had crashed so here's the log before I boot again (dunno if it's before or after the boot it gets made, I'm expecting before as it makes sense for it to print from boot to crash point), it's 8.8MB btw.

https://drive.google.com/file/d/1MRjojf6qMu3BE5yWRLoFJFOqhw288K8n/view?usp=sharing

And here's the last few lines:

77153.536:00e0:02ac:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x515bc1fc70,4,(nil))
77153.536:00e0:0188:trace:seh:NtQueryInformationThread (0x768,0,0xf5b3df7b0,30,(nil))
77153.536:00e0:02b0:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x51dbc2fc70,4,(nil))
77153.537:00e0:0188:trace:seh:NtQueryInformationThread (0x770,0,0xf5b3df7b0,30,(nil))
77153.537:00e0:02b4:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x525bc3fc70,4,(nil))
77153.537:00e0:0188:trace:seh:NtQueryInformationThread (0x778,0,0xf5b3df7b0,30,(nil))
77153.537:00e0:02b8:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x52dbc4fc70,4,(nil))
77153.537:00e0:0188:trace:seh:NtQueryInformationThread (0x780,0,0xf5b3df7b0,30,(nil))
77153.537:00e0:0188:trace:seh:NtSetInformationThread (0x670,3,0xf5b3df73c,4)
77153.538:00e0:02bc:trace:seh:dispatch_exception code=406d1388 flags=0 addr=000000007B01193E ip=7b01193e tid=02bc
77153.538:00e0:02bc:trace:seh:dispatch_exception  info[0]=0000000000001000
77153.538:00e0:02bc:trace:seh:dispatch_exception  info[1]=000000001b7f70d0
77153.538:00e0:02bc:trace:seh:dispatch_exception  info[2]=00000000ffffffff
77153.538:00e0:02bc:trace:seh:dispatch_exception  rax=000000005b91fd40 rbx=000000001b7f70c8 rcx=000000005b91fd20 rdx=0000000000000000
77153.538:00e0:02bc:trace:seh:dispatch_exception  rsi=000000005b91fe18 rdi=000000005b91fd58 rbp=0000000000000000 rsp=000000005b91fd00
77153.538:00e0:02bc:trace:seh:dispatch_exception   r8=0000000000000003  r9=000000005b91fe00 r10=00000000e859e785 r11=000000006fca0000
77153.538:00e0:02bc:trace:seh:dispatch_exception  r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000
77153.538:00e0:02bc:trace:seh:call_vectored_handlers calling handler at 0000000069060A10 code=406d1388 flags=0
77153.538:00e0:02bc:trace:seh:call_vectored_handlers handler at 0000000069060A10 returned ffffffff
77153.538:00e0:02bc:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x395b91fc70,4,(nil))
77153.539:00e0:0188:trace:seh:NtQueryInformationThread (0x670,0,0xf5b3df7b0,30,(nil))
77265.399:00e0:02c0:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x435ba5fca0,4,(nil))
83603.874:003c:0558:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x30afda0,4,(nil))
83604.892:003c:0074:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x248fda0,4,(nil))
83604.892:0058:008c:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x3eefda0,4,(nil))
83604.894:0090:00a0:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x1a8fda0,4,(nil))
83605.000:0030:00a4:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x36dfda0,4,(nil))
83605.000:0030:0098:trace:seh:NtQueryInformationThread (0xfffffffffffffffe,12,0x30cfda0,4,(nil))
pid 204539 != 204538, skipping destruction (fork without exec?)
awsdert commented 3 years ago

This update seems to have resolved the issue, at the very least I haven't experienced a crash since the update (though it seems pince can no longer stayed hooked to the game for long, I best get on with gasp which doesn't use shared library injection as it's primary method), I would mark the game as playable now

awsdert commented 3 years ago

It just crashed on me again :| Didn't remove the debug option so I have the log if you still need it, though I suspect you won't given the crash can be encountered at the title screen (I was in middle of tearing down the ship in moonbrooke though)

awsdert commented 3 years ago

It just crashed again, far too quick this time so I'm now sure it's a memory management problem

Hielyr commented 3 years ago

It just crashed again, far too quick this time so I'm now sure it's a memory management problem

Are you sure it's not a hardware issue?

awsdert commented 3 years ago

Well no other game does it (as yet from my experience, haven't played any long enough for it to be an issue) and the time span between crashes is somewhat random, however the common point when actually playing seems to be that I forgot to save frequently which suggests to me that whatever attempt it's making at temporarily storing changes until the save proper is simply not managing to free the memory properly or not exiting a system call as it was expecting to - that last one I've had my own experience in when programming and it occured when my thread tried to read something that had not managed to be written, that was just poor code on my part as I was still learning to understand how to do multi-threaded programming but still is similar to what I'm experiencing in DQB2, somewhere along the memory management line in the thread code is possibly a message that is being incorrectly interpreted or written as "read/write this now" despite there being nothing to read/write, I eventually solved that bug in my code by just having the main thread poll a global for written data and then pass on the message to every thread who are then responsible for deciding if the message is relevant to them when they poll their own pipes for written data and read out the message, every thread sent their message to the main thread who passes it on to every other thread where the intended thread can finally receive it and handle it as it was expected to, that made it easier to make safe allocations by just having the main thread handle allocations when it detect the message (it first tells all threads to wait, makes the allocation, then passes the new pointer on in a continue message)

awsdert commented 3 years ago

There's been a few updates since my last post, still experiencing the issue however not as badly now, instead of barely an hour it now varies in length between an hour and many, seems that as long as I save frequently it can cope for a while longer, I suspect the recent update of the game itself helped improve the situation however the bulk of the problem likely lies in an unnoticed mistake somewhere in the proton handlers, I can only think it's a race condition between threads that was not properly handled

awsdert commented 2 years ago

Found a repeatable method of encountering a crash, most likely happens on earliest islands too but I'm in end-game so you may need to get to that point before you can do this method, anyways I just go to one of the randomly generated islands (don't remember the name but it was the island that mimic the last chapters world, I think it was called Malrothia) and run around for a bit (or setup a monster trap farm for extracting a rare-drop) and after a while it just crashes, guaranteed, no matter what I'm doing. I believe it's connected to npc and/or foe scripts which in turn are likely connected to threading and at the very least memory, considering I normally get a freeze up like that from infinite loops in my own code I expect something is not producing an exit condition that DQB2 is expecting in those situations.

Edit: Setting up the Monster Trap Farm is the most efficient method of encountering the crash

awsdert commented 2 years ago

Had the crash happen again, this time however I noticed steam had locked up with it, tried to use my mouse on the system monitor app to shut down steam but it wouldn't respond to clicks, took the keyboard just fine, once steam had been shutdown with the game the system monitor app started responding to the mouse clicks again so perhaps there's something in the steam device API that doesn't play ball with arch linux properly, judging by the fact that mouse clicks didn't do anything I'm guessing it's somewhere in the lock/unlock part of the API, for some reason I'm not getting notifications for this issue though so please send me a message directly when you think you've fixed the possible cause in how steam communicates device stuff to/from games, I'll go check my github settings to make sure it's enabled now.

waspennator commented 1 year ago

I'm seeing some people say that proton 8 has regressed this game and wont launch anymore, but I don't have it on hand to check.

awsdert commented 1 year ago

I'm seeing some people say that proton 8 has regressed this game and wont launch anymore, but I don't have it on hand to check.

I've long since switched to just using proton experimental by default for everything, rarely get issues any more, certainly haven't seen a crash in months now

tyisafk commented 1 year ago

Game doesn't boot at all for me on ChimeraOS. Works fine on my Steam Deck though.

CPU: Ryzen 1700 GPU: Vega 56

steam-1072420.log

kisak-valve commented 1 year ago

Hello @tychii93, skimming over the log, DXVK is getting initialized a bunch of times, then hits an access violation (c0000005) in the NVIDIA driver. From your log: warn:seh:handle_syscall_fault backtrace: --- Exception 0xc0000005 at 0x7f2c5cea2858: /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/libEGL_nvidia.so.0 + 0xa2858.

tyisafk commented 1 year ago

That's interesting. I'm not using Nvidia on this system, and other games I've tested that use DXVK work. Removing all the preinstalled Nvidia packages fixed the problem though. Thanks!