This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Bus error in Python 3.6.0beta
Type: crash Stage: resolved
Components: Versions: Python 3.6
process
Status: closed Resolution: third party
Dependencies: Superseder:
Assigned To: Nosy List: Stefan Scherfke, mdk, yan12125
Priority: normal Keywords:

Created on 2016-11-22 12:35 by Stefan Scherfke, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (4)
msg281475 - (view) Author: Stefan Scherfke (Stefan Scherfke) Date: 2016-11-22 12:35
Hi all,

I am trying to build a custom Conda installer for Python 3.6.0b4.

I could successfully build an run Python.  However, when I run
the generated Conda installer, it dies with a "Bus error".

It happens when Conda's meta-installer script tries to replace
the build-prefix (e.g., /home/stefan/conda/asdf) with the prefix
of the actual installation (e.g., /tmp/py36).

Therefore, it opens all files in binary mode, reads their contents, replaces stuff, and writes the new contents back to the original file.

This works fine with text files but it dies when it hits the first binary file.

Here is a minimal example that reproduces the error:

$ /tmp/py36/bin/python
Python 3.6.0b4 (default, Nov 22 2016, 10:32:29)
[GCC 6.2.1 20160916 (Red Hat 6.2.1-2)] on linux
>>>
>>> path = '/tmp/py36/lib/libpython3.6m.so.1.0'
>>> f = open(path, 'wb')
BusError

Can anyone reproduce this?  Is this a compilation error or an issue
with Python itself?  It works without issues with Python 3.5.

Cheers,
Stefan

PS: If need, I can upload the Conda installer somewhere.  It's ~40MiB.
msg281492 - (view) Author: (yan12125) * Date: 2016-11-22 16:38
A common cause of bus error is mis-aligned memory access. Which architecture are you on and how did you compile Python? (compiler flags, etc.)

FWIW, configure python with --with-pydebug may bring you more debugging information
msg281533 - (view) Author: Julien Palard (mdk) * (Python committer) Date: 2016-11-22 23:34
I can't reproduce the issue:

   $ ./python
   Python 3.6.0b4+ (default, Nov 23 2016, 00:23:59)
   [GCC 5.4.1 20160904] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>> open('./python', 'rb')
   <_io.BufferedReader name='./python'>
   >>>

But you may try, as Chi Hsuan Yen, with --with-pydebug, also try with faulthandler, and we'll gladly read the output for something like:

   $ strace /tmp/py36/bin/python -c "open('/tmp/py36/lib/libpython3.6m.so.1.0', 'rb')" 2>&1 | tail -n 20

Also, running it in gdb may provide a nice stacktrace, if you have nothing interesting from strace and faulthandler.
msg281683 - (view) Author: Stefan Scherfke (Stefan Scherfke) Date: 2016-11-25 07:44
The cause for this issue was a backwards incompatible change between conda-build v1 and conda-build v2.
History
Date User Action Args
2022-04-11 14:58:39adminsetgithub: 72958
2016-11-25 08:20:53SilentGhostsetresolution: not a bug -> third party
stage: resolved
2016-11-25 07:44:51Stefan Scherfkesetstatus: open -> closed
resolution: not a bug
messages: + msg281683
2016-11-22 23:34:27mdksetnosy: + mdk
messages: + msg281533
2016-11-22 16:38:45yan12125setnosy: + yan12125
messages: + msg281492
2016-11-22 12:35:42Stefan Scherfkecreate