Skip to content

Possible deadlock when recording rollback events #17

@RoyCurtis

Description

@RoyCurtis

There might be a deadlock bug that happens whilst:

  • The main server thread is recording to the data_rollback table, at the end of a rollback operation, to mark which actions have been rolled back
  • The recording task, in an async thread, is recording actions that are happening in a world

When triggered, the entire server is hung and has to be killed. This bug is not triggered all the time; it appears to be random after a rollback.

Evidence

This issue was reported by @pugabear, who provided two logs of when the server hung after a player performed a rollback:

Theoretical causes / questions

Theoretical solutions

Try moving the rollback code to run in the same thread as recording tasks.

Notes

  • I am making a lot of assumptions here, as all I have to go on are two crash logs. It's entirely possible something else is to blame (e.g. server configuration, other plugins)
  • I've not personally hit this bug yet. Has anybody else, aside from @pugabear, had GPrism hang the server after a rollback?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions