-
Notifications
You must be signed in to change notification settings - Fork 68
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
Issue with Python tests #316
Comments
Hi! |
If the error is a segfault when running testMagneticLensPythonInterface.py, this is because from Python >3.2 there was a function whose name changed. |
In which file can i find that line 63? |
I have try to change the line in testMagneticLensPythonInterface.py, but I still get the error: |
With
|
The main problem is that when I import CRPropa in a jupyter notebook with |
These errors cannot be fixed with what I told you. These are python-related. |
I get |
I have tested a similar combination (but on OS X Catalina) with clang 11.0.3, python 3.7.2, swig 4.0.2. It works just fine. I will check the same clang version as yours later. To troubleshoot this we'll have to check each individual dependency. |
I have tried what you said, using the following flags for cmake:
but it does still not work. All the python-related tests fail for segfault. I attached below the outputs of Finally, at the very end there's the output of cmake
make
make install
otool
gdb
|
Hi, If the error is still there with the flag Try erasing the build folder, and then restarting installation with: ```-DPYTHON_LIBRARIES=/path1 -DPYTHON_EXECUTABLE=/path2/ -DPYTHON_INCLUDE_PATH=/path3`` Note that path1 should include libpython3.7.so (or similar); path2 explicitly contains the binary, and path3 points to the folder where Python.h is. Make sure that all these flags point to the same version (anaconda, for instance). |
I have tried with the following CFLAGS after updating all the packages with conda to restore all the dependencies:
and I've got this error:
Any clue? Might it be possible that the issue is related to anaconda? |
It seems like NumPy is not installed for this python version you are using (or it was not found by CMake). |
Without specifying the paths for python I do not get that error... I am really sorry to still bother you :-D |
That's odd. I personally like to provide every single flag by hand to avoid problems, and specifying the paths has always been the solution. Is everything working fine now? (don't forget to reactivate the OpenMP flag) |
Well, no....I am able to install crpropa, but still get segfault with the python-related tests... |
So python still doesn't work even when you provide the paths by hand? Are you cleaning everything in the build folder? |
@MarcoChianese could you solve the problem? |
Hi all, I ran into this problem on MacOS with Python 3 as well. The _crpropa.so library that is loaded by the python module segfaults upon import when built for Python 3, but not for Python 2.7 (macos built-in version). It seems this is due to a difference in the proper linking of the .so file. For Python 3 on Mac (homebrew version), the .so file should NOT be linked to libpython; instead the python3 interpreter will dynamically link libpython at runtime. The .so built by the current CMake setup ends up doubly-linked to libpython, leading to segfaults. I "fixed" this in a very hacky way by changing to a more modern Python detection and build framework in CMake. This also has the advantage that it will automatically detect compatible virtualenvs or conda envs and use their paths before the system python. I expect that I will have broken it on every other operating system. Feel free to check out my (very messy) solution in my fork, https://github.com/tdwiser/CRPropa3. It is currently nowhere near clean enough for a pull request. |
Can @tdwiser or @MarcoChianese confirm that with @rafaelab PR (#352) this issue was solved? |
I encountered the same issue brought up by @MarcoChianese. When installing the latest version (3.1.7) under python3.8 on MacOS, no error was reported and the c++ executable was generated, but importing the python site-package caused segmentation default. By replacing the CMakeLists from @tdwiser 's page https://github.com/tdwiser/CRPropa3 and fixing the difference in the build list, the segmentation issue was addressed and the python part ran as normal. |
Hi @ke-fang |
I tested it with the current development version and for 3.1.7 and encountered in both versions the test failure 17 - testMagneticLensPythonInterface (SEGFAULT). All other tests pass. My setup: |
Both, I think. I have Mac OS Big Sur 11.6.1, python 3.8.12, cmake 3.19.6, swig 4.0.2. Another machine with Mac OS Monterey 12.1 encountered the same issue. |
@ke-fang, @tdwiser Can anyone of you confirm that all tests pass except for the testMagneticLensPythonInterface (SEGFAULT) as @reichherzerp reported? In that case I would guess that it's probably not a general python issues but something in the magnetic lens interface might be broken. |
@lukasmerten apologies, my build environment does not seem to be working right now after upgrading to macOS 12 (Monterey) on M1 chip. Both the release build 3.1.7 and my previously-hackily-fixed clone tdwiser/CRPropa3 fail to test properly (testCore, std::bad_alloc; several others as well). This is almost certainly a problem with my dependencies. So I can't confirm or deny anything at this point. |
Ok, so we keep that issue open for reference. Please let us know if you have any news on that. Unfortunately I've heard from others too, that the M1 chip with macOS 12 seems to be problematic for CRPropa. |
@lukasmerten OK I made some progress, there is a problematic function in the kiss library (executable_path()) which does not work on macos and causes some memory problem. This is bypassed if you set -DCMAKE_INSTALL_PREFIX and Now I have built and run all tests on macOS 12.3.1, M1 chip, building for x86_64 (running under 'Rosetta' translation layer in mac lingo), and all tests pass except for |
Please, try running these python scripts manually, for example, the simplest one ( |
The SEGFAULT occurs immediate upon
I believe the issue is the same as conda-forge/python-feedstock#272: libpython should not be loaded dynamically on macOS + Python3. It is already linked statically into the python executable. Modifying the CMake script slightly (to use a newer method of locating python and numpy) automatically fixes it, although a more minimal fix is likely possible, see tdwiser/CRPropa3@a9830a9e. You can see the difference in linking with |
I confirm passing all tests with these changes, but when trying to use the magnetic lenses I get the Segfault error again. |
Dear developers,
I have problems installing CRPropa on my system since the tests 17,18,19,20 related to python provides SegFault. I have followed the installing instructions and read few similar threads, though I am still struggling with this issue. I have mac OS Mojave 10.14, python version 3.7.4 through anaconda, swig version 4.0.2, cmake version 3.17.0.
This is the output of cmake:
Could you please help me? Let me know what else you need.
The text was updated successfully, but these errors were encountered: