Skip to content
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

Crash: CorsixTH\Lua\rooms\operating_theatre.lua:125: assertion failed! #1244

Open
KeeperSt opened this issue Sep 14, 2017 · 2 comments
Open

Comments

@KeeperSt
Copy link

KeeperSt commented Sep 14, 2017

Describe the issue

Welcome to CorsixTH v0.60!


This window will display useful information if an error occurs.


Checking for CorsixTH updates...
You are running the latest version of CorsixTH.
An error has occurred!
Almost anything can be the cause, but the detailed information below can help the developers find the source of the error.
Running: The buttonup handler.
A stack trace is included below, and the handler has been disconnected.
...vos de programa\CorsixTH\Lua\rooms\operating_theatre.lua:125: assertion failed!
stack traceback:
[C]: in function 'assert'
...vos de programa\CorsixTH\Lua\rooms\operating_theatre.lua:125: in method 'commandEnteringStaff'
F:\Archivos de programa\CorsixTH\Lua\room.lua:357: in method 'onHumanoidEnter'
...rchivos de programa\CorsixTH\Lua\dialogs\place_staff.lua:123: in method 'onMouseUp'
F:\Archivos de programa\CorsixTH\Lua\window.lua:1462: in field 'onMouseUp'
F:\Archivos de programa\CorsixTH\Lua\ui.lua:649: in function <F:\Archivos de programa\CorsixTH\Lua\ui.lua:636>
(...tail calls...)
F:\Archivos de programa\CorsixTH\Lua\app.lua:901: in function <F:\Archivos de programa\CorsixTH\Lua\app.lua:896>

Warning: No event handler for buttonup

System Information

**CorsixTH Version:**0.60

**Operating System:*Windows 10

Theme Hospital Version: *CD

Additional Info
med general14

@Alberth289346
Copy link
Contributor

Something is wrong :)

To analyze and eventually solve the problem however, we need a guide to reproduce the problem quickly. While testing, we may need to try the same situation a few dozen times, and a guide like "play corsixth for a few weeks" doesn't quite work then.

Do you have a way to get this problem again in say 1 minute? Usually it starts with loading a game, then letting it run for 10-30 seconds doing nothing, or doing some specific instructions, leading to the crash.
If you have, please upload the savegame, and tell us how to cause it to crash again.

@mugmuggy
Copy link
Contributor

The isOperating check in OperatingTheatreRoom:commandEnteringStaff is doing a check on staff_member_set for any staff member with a multi_use_object action.

It then assumes that 'surgeon1' derived from next(staff_member_set), is the one actually performing the operation. Though admittedly its a little bit harder to find when that won't occur, but could spontaneously occur during depersistence I guess or when the insert into staff_member_set is just right.

However I was able to interrupt an operation, and rotating doctors in quickly into the one operating theatre and replicate without my getStaffMember change. In trying to replicate it other attempts I had 4 gowned and operating surgeons at one point and I was able to drop a gowned surgeon outside in the corridor. But the circumstances of doing that would be outside of 'normal' play.

So far unsuccessful with the getStaffMember function changes guarding the commandEnteringStaff call in replicating the issue. isOperating could just return the staff member instead and the assert in this regard becomes redundant (but believe its more for the other next(self.staff_member_set) references where this is also handy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants