[Bug 43674] New: Oxygen Not Included: occasional hangs

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Sep 8 00:29:04 CDT 2017


https://bugs.winehq.org/show_bug.cgi?id=43674

            Bug ID: 43674
           Summary: Oxygen Not Included: occasional hangs
           Product: Wine
           Version: 2.15
          Hardware: x86-64
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ntdll
          Assignee: wine-bugs at winehq.org
          Reporter: thelonewolfling at gmail.com
      Distribution: ---

Created attachment 59117
  --> https://bugs.winehq.org/attachment.cgi?id=59117
Tailed log filtered on lines containing 0185 or RtlpWaitForCriticalSection

Every once in a while, Oxygen Not Included softlocks. By which I mean: screen
stops updating, game does not respond to keyboard or mouse input, but the
current sounds playing keep looping (!).

It seems to occur more often the later in the game you get, and more on higher
speeds. By the time you get into the 'late' game (100 cycles+) it's >1x per
cycle (10min), generally speaking. As the game has a fixed autosave of 1x per
cycle, this rapidly becomes annoying.

My gut feeling is it's something to do with playing many sounds at once. ONI
has many ambient sounds depending on what is on screen, and when working in
areas that don't have much in them it doesn't seem to crash.

Unfortunately, this doesn't seem to be deterministic - or at least, if it is,
there's enough PRNG-ness on ONI's side to hide it.

I managed to capture a (very laggy) WINEDEBUG=+relay,+seh,+tid log.
Unfortunately, it's ~26GB. Even a .xz archive is ~260MB.

There is the following message when it hangs:

354297159:013d:err:ntdll:RtlpWaitForCriticalSection section 0x12d072c8 "?" wait
timed out in thread 013d, blocked by 0185, retrying (60 sec)

(Note: the first number here is the line number (!), as this was using grep on
the output file...)

Unfortunately, this seems to be more of a symptom than a cause. Great, so it
timed out waiting for a lock... why? And where?

I can't even attach the log starting at the erroring line - even an .xz archive
is 9MB...

I grepped through the log myself (filtered on threads 0185 & 013d), and found
something interesting... For the most part, thread 0185 seems to be just
allocating / freeing (RtlAllocateHeap / RtlFreeHeap). Then suddenly it switches
behaviors with a NtRaiseException - see the attached filtered log file. My
guess is that it's catching an error (and making a dump) but not handling it
anywhere near gracefully.

This is with wine 2.15 staging.

What should be my next steps?

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list