View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006093 | DarkRadiant | Design/Coding | public | 05.09.2022 03:55 | 13.01.2024 05:32 |
Reporter | greebo | Assigned To | greebo | ||
Priority | normal | Severity | normal | Reproducibility | sometimes |
Status | closed | Resolution | fixed | ||
Product Version | 3.2.0 | ||||
Target Version | 3.3.0 | Fixed in Version | 3.3.0 | ||
Summary | 0006093: Unit Tests intermittently get stuck on Github runner | ||||
Description | It seems there's still a problem with the threaded decl parsing on radiant startup. Every so often, the unit tests on the Github runner are stalling or deadlocking and the build is timing out. The phenomenon was pretty rare up until a few builds, but in the meantime it feels like every second build gets stuck. | ||||
Tags | No tags attached. | ||||
DarkRadiant: master 313c91ce 08.09.2022 11:13 Details Diff |
0006093: Add time out to HeadlessOpenGLContext creation method |
Affected Issues 0006093 |
|
mod - test/HeadlessOpenGLContext.cpp | Diff File | ||
DarkRadiant: master f5a92e1a 08.09.2022 11:42 Details Diff |
0006093: openGL context is now created once per test session in a global environment setup class |
Affected Issues 0006093 |
|
mod - test/HeadlessOpenGLContext.cpp | Diff File | ||
DarkRadiant: master 40d0e799 09.09.2022 17:09 Details Diff |
0006093: Rearrange locks and algorithms in DeclarationManager to avoid locks being acquired while another lock is held, which should avoid deadlocks in methods called from different threads. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - radiantcore/decl/DeclarationManager.h | Diff File | ||
DarkRadiant: master b0e32b22 10.09.2022 03:26 Details Diff |
0006093: Attempt to resolve the scenario of two threads attempting to delete the same parser instance, which can occur by moving the unique_ptr simultaneously. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
DarkRadiant: master 8d7f4a34 10.09.2022 05:30 Details Diff |
0006093: Ensure that DefParser subclasses are invoking reset() before the destructor is taking the instance table apart. |
Affected Issues 0006093 |
|
mod - libs/parser/ThreadedDeclParser.h | Diff File | ||
mod - libs/parser/ThreadedDefLoader.h | Diff File | ||
mod - radiantcore/decl/DeclarationFolderParser.h | Diff File | ||
DarkRadiant: master dd095239 10.09.2022 06:11 Details Diff |
0006093: Signals are stored in a map that should not be modified simultaneously. Signals are only ever added once to the map (which needs to happen in a synchronised fashion), afterwards it's safe to hand out references to the existing signals. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - radiantcore/decl/DeclarationManager.h | Diff File | ||
DarkRadiant: master 0f1d8655 10.09.2022 09:53 Details Diff |
0006093: Re-enable the disabled unit test |
Affected Issues 0006093 |
|
mod - test/DeclManager.cpp | Diff File | ||
DarkRadiant: master 09614dd8 10.09.2022 15:12 Details Diff |
0006093: Further tweak the DeclarationManager to wait for all parsers to finish before serving any queries. Since decls like Tables (or stricly speaking any decl) cannot be pinned down to a single directory, any running parser might be coming home with the decl type/name combination the client is looking for. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - test/DeclManager.cpp | Diff File | ||
DarkRadiant: master 76c1c434 10.09.2022 15:27 Details Diff |
0006093: Log any exception occurring in the ThreadedDeclParser thread. |
Affected Issues 0006093 |
|
mod - libs/parser/ThreadedDeclParser.h | Diff File | ||
DarkRadiant: master 897be386 10.09.2022 16:38 Details Diff |
0006093: Don't release the lock while iterating over the container the code is processing. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
DarkRadiant: master 137905aa 10.09.2022 19:03 Details Diff |
0006093: Fix another deadlock occurring when parsers are cleaned up in a worker thread. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - radiantcore/decl/DeclarationManager.h | Diff File | ||
DarkRadiant: master 75b01acf 11.09.2022 05:45 Details Diff |
0006093: More code to ensure that pending cleanup tasks are not interfering with module shutdown. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - radiantcore/decl/DeclarationManager.h | Diff File | ||
DarkRadiant: master e8853081 11.09.2022 08:04 Details Diff |
0006093: Circumvent a problem during reloadDecls. When assigning the new syntax block to an existing declaration, the changed signal might trigger a new call to the DeclarationManager API, which waits for the parser tasks to finish. The finish tasks must not employ any locks, otherwise it will deadlock. |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
DarkRadiant: master 36a765d8 11.09.2022 09:12 Details Diff |
0006093: It's possible to move the std::future, but that's not advisable as long as some other code holds a C++ reference to it... |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - radiantcore/decl/DeclarationManager.h | Diff File | ||
DarkRadiant: master 7a0364f7 11.09.2022 10:15 Details Diff |
0006093: Wait for all pending clean up tasks before leaving waitForTypedParsersToFinish() |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
mod - radiantcore/decl/DeclarationManager.h | Diff File | ||
DarkRadiant: master 5e1ddb1f 11.09.2022 11:07 Details Diff |
0006093: Don't immediately remove pending tasks from the lists |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File | ||
DarkRadiant: master 06f210b2 11.09.2022 11:24 Details Diff |
0006093: Some pending threads might access user code that should be finished before all modules are shut down |
Affected Issues 0006093 |
|
mod - radiantcore/decl/DeclarationManager.cpp | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
05.09.2022 03:55 | greebo | New Issue | |
05.09.2022 03:55 | greebo | Status | new => confirmed |
08.09.2022 11:42 | greebo | Changeset attached | => DarkRadiant master 313c91ce |
08.09.2022 11:42 | greebo | Changeset attached | => DarkRadiant master f5a92e1a |
08.09.2022 11:43 | greebo | Assigned To | => greebo |
08.09.2022 11:43 | greebo | Status | confirmed => assigned |
09.09.2022 17:31 | greebo | Changeset attached | => DarkRadiant master 40d0e799 |
10.09.2022 03:26 | greebo | Changeset attached | => DarkRadiant master b0e32b22 |
10.09.2022 06:11 | greebo | Changeset attached | => DarkRadiant master 8d7f4a34 |
10.09.2022 06:11 | greebo | Changeset attached | => DarkRadiant master dd095239 |
10.09.2022 06:39 | greebo | Target Version | => 3.3.0 |
10.09.2022 06:39 | greebo | Status | assigned => resolved |
10.09.2022 06:39 | greebo | Resolution | open => fixed |
10.09.2022 06:39 | greebo | Fixed in Version | => 3.3.0 |
10.09.2022 09:53 | greebo | Changeset attached | => DarkRadiant master 0f1d8655 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 09614dd8 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 76c1c434 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 897be386 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 137905aa |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 75b01acf |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master e8853081 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 36a765d8 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 7a0364f7 |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 5e1ddb1f |
11.09.2022 13:43 | greebo | Changeset attached | => DarkRadiant master 06f210b2 |
13.01.2024 05:32 | greebo | Status | resolved => closed |