This deadlock happens when another thread holds a cycler lock and then attempts to call Pipeline::remove_cycler() while Pipeline::cycle() is running on the main thread. The fix for this problem is threefold: * Allow remove_cycler (and add_cycler) to be called while a cycle is in progress, by introducing a second lock * Let cycle() not block if a dirty cycler can't be locked, instead trying other cyclers first * Adding a way to let remove_cycler() check whether a cycler is currently in use by the main thread, and yielding if so More information is on https://github.com/panda3d/panda3d/issues/217 Fixes #217 (also see LP 1186880) |
||
|---|---|---|
| .. | ||
| metalibs | ||
| src | ||