Skip to content
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

Pause and resume profiling around forks #115

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open

Pause and resume profiling around forks #115

wants to merge 11 commits into from

Conversation

jhawthorn
Copy link
Owner

Based on #82

I think there's more I can simplify here still. After implementing all of it I'm not sure that pause/resume need to be separate from start/stop.

I'll also want to make something more efficient than running ObjectSpace.each_object on every fork. This also does leave a possible race condition where if you are spawning new threads which are themselves making new profiles as you fork we may miss one to disable, but I'm reasonably happy ignoring that for now.

byroot and others added 11 commits December 11, 2024 23:13
Otherwise the child will hang forever on exit when trying to
dump the profiling data. Which is problematic when trying to
profile some programs.

There might be more elegant ways to handle it, this is mostly
a proof of concept.

Also it's not quite fully working, the test passes alone, but
but if ran after some other specific tests, it end up in a
SIGTRAP, which I'm not sure why:

```
bundle exec rake SEED=26641 TESTOPTS="-v"
...

 1) Failure:
TestVernier#test_that_forked_children_do_not_hang [test/test_vernier.rb:15]:
Expected #<Process::Status: pid 63146 SIGTRAP (signal 5)>
 to be success?.

```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants