You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test_dbm and test_dbm_ndbm segfaults in M1 Mac with Homebrew gdbm 1.23 #89452
0:04:14 load avg: 3.86 [141/427/1] test_dbm crashed (Exit code -11)
Fatal Python error: Segmentation fault
Current thread 0x0000000102e2bd40 (most recent call first):
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/test_dbm.py", line 58 in keys_helper
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/test_dbm.py", line 143 in read_helper
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/test_dbm.py", line 74 in test_anydbm_creation
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/case.py", line 547 in \_callTestMethod
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/case.py", line 591 in run
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/case.py", line 646 in \_\_call__
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/suite.py", line 122 in run
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/suite.py", line 84 in \_\_call__
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/suite.py", line 122 in run
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/suite.py", line 84 in \_\_call__
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/suite.py", line 122 in run
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/suite.py", line 84 in \_\_call__
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/unittest/runner.py", line 197 in run
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/support/__init__.py", line 992 in \_run_suite
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/support/__init__.py", line 1118 in run_unittest
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/runtest.py", line 261 in \_test_module
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/runtest.py", line 297 in \_runtest_inner2
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/runtest.py", line 340 in \_runtest_inner
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/runtest.py", line 202 in \_runtest
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/runtest.py", line 245 in runtest
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/runtest_mp.py", line 83 in run_tests_worker
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/main.py", line 678 in \_main
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/main.py", line 658 in main
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/libregrtest/main.py", line 736 in main
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/regrtest.py", line 43 in \_main
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/test/regrtest.py", line 47 in \<module\>
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/runpy.py", line 86 in \_run_code
File "/Users/buildbot/buildarea/3.x.pablogsal-macos-m1.macos-with-brew/build/Lib/runpy.py", line 196 in \_run_module_as_main
Extension modules: \_testcapi (total: 1)
0:04:15 load avg: 3.87 [142/427/1] test_c_
importdbm.ndbmfrompathlibimportPathdb_path=Path("/tmp/test.dbm")
db_path.unlink(missing_ok=True)
f=dbm.ndbm.open(db_path, 'c')
print("Underlying lib:", dbm.ndbm.library)
print("f is an", repr(f))
print("The next line segfaults:")
f.keys()
This crashes with:
Underlying lib: GNU gdbm
f is an <_dbm.dbm object at 0x105a8fe80>
The next line segfaults:
Fatal Python error: Segmentation fault
Current thread 0x0000000105794580 (most recent call first):
File "/Volumes/RAMDisk/cpython/_test.py", line 10 in <module>
fish: Job 1, './python.exe -X faulthandler _t…' terminated by signal SIGSEGV (Address boundary error)
Note that swapping dbm.ndbm for dbm.gnu causes the example to run without crashing:
importdbm.gnufrompathlibimportPathdb_path=Path("/tmp/test.dbm")
db_path.unlink(missing_ok=True)
f=dbm.gnu.open(db_path, 'c')
print("f is an", repr(f))
print("The next line runs fine:")
f.keys()
This just outputs:
❯ ./python.exe -X faulthandler _test.py
f is an <_gdbm.gdbm object at 0x103afae90>
The next line runs fine:
❯
So looks like there is something off with the ndbm compatibility layer of gdbm on M1 Macs.
Activity
pablogsal commentedon Sep 25, 2021
The backtrace according to lldb:
The last 3 frames:
The segfault happens here:
pablogsal commentedon Sep 25, 2021
See https://buildbot.python.org/all/#/builders/725/builds/4
[-]test_gdbm segfaults in M1 Mac[/-][+]test_dbm and test_dbm_ndbm segfaults in M1 Mac[/+]ambv commentedon May 2, 2022
Looking at macOS native crash reporting, the issue is in this line of
_dbm_dbm_keys_implwithin the_dbmmodule.c:Crash report:
ambv commentedon May 2, 2022
A minimal reproduction is:
This crashes with:
ambv commentedon May 2, 2022
Note that swapping
dbm.ndbmfordbm.gnucauses the example to run without crashing:This just outputs:
So looks like there is something off with the ndbm compatibility layer of gdbm on M1 Macs.
ambv commentedon May 2, 2022
This is on Homebrew gdbm 1.23.
5 remaining items
ambv commentedon May 3, 2022
I unlinked the issue because this is not what we want: "linked a pull request that will close this issue"
We want to backport the fix.
gh-89452: Prefer gdbm-compat over ndbm (#92208)
ambv commentedon May 3, 2022
See PR, we actually don't want to backport this. So this is fixed for 3.11+. For older Python versions, the workaround is to build with:
[3.10] pythongh-89452: GHA: Set --with-dbmliborder to avoid issues wi…
encukou commentedon Oct 8, 2024
This is now blocking 3.10 & 3.9 backport PRs. I'll re-open.
[3.10] gh-89452: GHA: Set --with-dbmliborder to avoid issues with hom…
[3.9] pythongh-89452: GHA: Set --with-dbmliborder to avoid issues wit…
[3.9] gh-89452: GHA: Set --with-dbmliborder to avoid issues with home…
ambv commentedon Oct 9, 2024
Thanks! Fixed and merged.