Skip to content

Comments

druntime: Move unblockGCSignals to core.internal.gc.os#21847

Merged
thewilsonator merged 1 commit intodlang:masterfrom
ibuclaw:gc_unblock_signals2
Sep 11, 2025
Merged

druntime: Move unblockGCSignals to core.internal.gc.os#21847
thewilsonator merged 1 commit intodlang:masterfrom
ibuclaw:gc_unblock_signals2

Conversation

@ibuclaw
Copy link
Member

@ibuclaw ibuclaw commented Sep 11, 2025

Limit the number of platforms that this is done on. A inspection of some libc implementations of fork has identified the main culprits, don't need to apply this to any others.

MacOS testsuite also regressed as a result on calling this code, it's not clear why, but the backtrace is:

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
  * frame #0: 0x00007ff81abe6ee3 libsystem_platform.dylib`_os_unfair_lock_recursive_abort + 23
    frame #1: 0x00007ff81abe12da libsystem_platform.dylib`_os_unfair_lock_lock_slow + 247
    frame #2: 0x00007ff81abccd44 libsystem_pthread.dylib`_pthread_atfork_prepare_handlers + 48
    frame #3: 0x00007ff825dc2705 libSystem.B.dylib`libSystem_atfork_prepare + 25
    frame #4: 0x00007ff81aac17e1 libsystem_c.dylib`fork + 24
    frame #5: 0x0000000101f730ee test_runner`core.internal.backtrace.dwarf.resolveAddressesWithAtos(Location[]) + 210

Limit the number of platforms that this is done on.  A inspection of
some libc implementations of fork has identified the main culprits,
don't need to apply this to any others.

MacOS testsuite also regressed as a result on calling this code, it's
not clear why, but the backtrace is:
```
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
  * frame #0: 0x00007ff81abe6ee3 libsystem_platform.dylib`_os_unfair_lock_recursive_abort + 23
    frame #1: 0x00007ff81abe12da libsystem_platform.dylib`_os_unfair_lock_lock_slow + 247
    frame #2: 0x00007ff81abccd44 libsystem_pthread.dylib`_pthread_atfork_prepare_handlers + 48
    frame dlang#3: 0x00007ff825dc2705 libSystem.B.dylib`libSystem_atfork_prepare + 25
    frame dlang#4: 0x00007ff81aac17e1 libsystem_c.dylib`fork + 24
    frame dlang#5: 0x0000000101f730ee test_runner`core.internal.backtrace.dwarf.resolveAddressesWithAtos(Location[]) + 210
```
@dlang-bot
Copy link
Contributor

Thanks for your pull request, @ibuclaw!

Bugzilla references

Your PR doesn't reference any Bugzilla issue.

If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog.

Testing this PR locally

If you don't have a local development environment setup, you can use Digger to test this PR:

dub run digger -- build "master + dmd#21847"

@ibuclaw ibuclaw added Severity:Regression PRs that fix regressions Druntime Specific to druntime Druntime:GC Issues relating the Garbage Collector labels Sep 11, 2025
@thewilsonator thewilsonator merged commit f407ee7 into dlang:master Sep 11, 2025
44 checks passed
@ibuclaw ibuclaw deleted the gc_unblock_signals2 branch September 12, 2025 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Druntime:GC Issues relating the Garbage Collector Druntime Specific to druntime Severity:Regression PRs that fix regressions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants