View Issue Details

IDProjectCategoryView StatusLast Update
0006093DarkRadiantDesign/Codingpublic13.01.2024 05:32
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilitysometimes
Status closedResolutionfixed 
Product Version3.2.0 
Target Version3.3.0Fixed in Version3.3.0 
Summary0006093: Unit Tests intermittently get stuck on Github runner
DescriptionIt 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.
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Related Changesets

DarkRadiant: master 313c91ce

08.09.2022 11:13

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

Issue History

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