Skip to content

Lots of warnings when building macos x86_64, then it crashes when using the wheel #219

@mattip

Description

@mattip

After #217, which was merged the macos x86_64 wheels crash. I see many warnings during the build like

ld: warning: reducing alignment of section __TEXT,__text \
    from 0x10000 to 0x1000 because it exceeds segment maximum alignment

When using the wheel in numpy/numpy#30049, there is a segfault. I can reproduce locally on a macbook M1 (arm64) by

arch -x86_64 bash
python3.12 -m venv /tmp/venv312x86_64
. /tmp/venv312x86_64/bin/activate
cd numpy
python -m pip install -r requirements/build_requirements.txt
python -m pip install scipy-openblas64-0.3.30.0.4
spin build --clean --with-scipy-openblas=64 -- -Dpkg_config_path=$PWD/.openblas
spin python -- -c "import numpy"

Then in the console app (launcher -> console) I see this log for Python:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGBUS)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x0000000112443740
Exception Codes:       0x0000000000000002, 0x0000000112443740

Termination Reason:    Namespace SIGNAL, Code 10 Bus error: 10
Terminating Process:   exc handler [92470]

VM Region Info: 0x112443740 is in 0x111e88000-0x114ab1000;  bytes after start: 6010688  bytes before end: 40294591
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      VM_ALLOCATE (reserved)      10f004000-111004000    [ 32.0M] rw-/rwx SM=NUL  reserved VM address space (unallocated)
      GAP OF 0xe84000 BYTES
--->  __TEXT                      111e88000-114ab1000    [ 44.2M] r-x/rwx SM=COW  /tmp/*/libscipy_openblas64_.dylib
      __DATA                      114ab1000-114ad8000    [  156K] rw-/rwx SM=COW  /tmp/*/libscipy_openblas64_.dylib

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   libscipy_openblas64_.dylib    	       0x112443790 dcopy_k_NEHALEM + 80
1   _umath_linalg.cpython-312-darwin.so	       0x10dfd5d2c copy(long*, double*, long*, double*, long*) + 20 (umath_linalg.cpp:802) [inlined]

I think the two things are connected?

Are we missing a compiler flag maybe because of cross-compilation?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions