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
Fix the backend exiting - exit is going back to perl, we want to kill it #519
Conversation
What do you mean by 'going back to perl'. Do we need to avoid running 'END' section? According to perldoc, not even perls |
unless these ENDs do a select without timeout. I blame autodie, but I couldn't prove that. |
Indeed. In that case 👍 Btw. do you know some perl flag to trigger debug printing of perl itself to check what is being executed? And that it prints what sections (from which module) it is entering? Once I played with |
As isotovideo still wouldn't abort fully, I traced it:
|
spot how this triggers it:
The same as with the other process |
exit is calling all kind of exit handlers including the one of libusb, which tries to close some monitoring that it started on library load (very strange concept). As we fork off the data from isotovideo, we inherit all this but can't (and shouldn't) erase it in the childs. So use _exit On top of that perl 5.24 introduced AUTOLOADing DESTROY, which causes funny deadlocks - so have an explit DESTROY, even when no longer DESTROYing due to _exit (but safer is safer)
you think this could help or actually fix https://progress.opensuse.org/issues/12178 ? |
I seriously don't know. The AUTOLOAD on DESTROY is definitely something new to perl 5.24, but the libusb pthread mess could actually be affected there too. So possibly, yes. |
I do remember have seen the similar change while I read perldelta... |
No description provided.