-
-
Notifications
You must be signed in to change notification settings - Fork 384
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
Fixes #668 : Fix delete order of threads #846
Conversation
Hello @m-seker 👋 I'm your friendly neighborhood bot and would like to say thank you for So that you and other users can test your changes more quickly, If you make changes to your PR, i create a new link to your workflow artifacts. Best regards, |
@m-seker Looks like you have a good understanding of Qt and Cpp in general. Unfortunately, I have not had any time myself, but maybe it gives you some challenge you like to take up ...:) |
@Lord-Grey sure, I'm pretty new to the codebase but I can give it a try :) A quick visual inspection for Effect.cpp and EffectEngine.cpp didn't reveal a potential crash area but only some memory leaks (active effect leaks on quit). EDIT: I gave another look. If there are active effects in EventEngine( Something like this should eliminate that possibility (and the leak as well) :
Probably this is not the issue you are talking about but better to mention when I'm on it. |
on the Python problem, please find a stack-trace below.
|
Correct. That is what I remember vaguely, too. |
@Lord-Grey I created the following PR for fixing the mentioned problem: Unfortunately I couldn't reproduce the crash. Maybe when you have time you can give the proposed fix a try after it is merged (or with PR artifacts) and see if it is still reproducible ? |
I can confirm that this PR works wonderfully in conjunction with PR 850. Thank you for your work. 👍 |
Thanks you :) |
Here is your new link to your workflow artifacts. |
Summary
Fixes #668
_ssdp
andssdpThread
are deleted afterssdpThread
finishes(HyperionDaemon::startNetworkServices()
.Looking at
HyperionDaemon::freeObjects()
:As soon as
quit
is called,finished
signal is emitted from the thread and both objects are destroyed. Hence the second call -wait(1000)
SEGFAULTs since it tries to access a destroyed object.The problem is sporadic because sometimes destruction happens after
wait
returns. You can reproduce it %100 if you put sleep betweenquit
wait(1000)
:Solution is postponing the delete until both
quit
andwait
returns:What kind of change does this PR introduce? (check at least one)
If changing the UI of web configuration, please provide the before/after screenshot:
Does this PR introduce a breaking change? (check one)
If yes, please describe the impact and migration path for existing setups:
The PR fulfills these requirements:
Fixes: #xxx[,#xxx]
, where "xxx" is the issue number)If adding a new feature, the PR's description includes:
To avoid wasting your time, it's best to open a feature request issue first and wait for approval before working on it.
Other information: