-
Notifications
You must be signed in to change notification settings - Fork 167
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
Bus Error (core dumped) with anaconda.org/anaconda and anaconda.org/conda-forge #57
Comments
oh, right, conda info: conda info -a
condarc
conda list
|
Sorry @ericdill I'm not the right one for this. I'll make sure @ilanschnell sees this issue, though. |
The problem is that the Python binary from conda-forge contains binary placeholders, which causes a bootstrapping issue. The solution is to fix the conda-forge recipe by adding:
|
Thanks @ilanschnell, that should improve the conda-forge python in more ways than just this. |
I've run into this issue as well, the issue is that during install the constructor install script re-writes shared libraries used by a process (python). These are files are typically memory mapped, rewriting causes a Bus Error. There are two solutions that are think are possible
From personal experience, I know that the first option works but I think the second is more general and a better solution. There are files in most Python packages which have binary prefixes that should be replaced, I do not think misrepresenting this fact is the correction solution. |
Thanks @jjhelmus. I agree that 2 is a nicer solution. How does the unlinking work? Is copying particular files an adequate substitute? Should we instead be setting the no_link meta.yaml setting for any files that are causing this issue? |
fwiw this problem started showing up in my nightly constructor creation last night. The difference is that I started pulling in python 3.5.2-4 from conda-forge. There is no bus error with python 3.5.2-2 from conda-forge [edit] bad typo in python version (was 3.4.2 instead of 3.5.2) |
Stack overflow has a nice write up on this topic: How to upgrade shared library without crash?. I think that adding if new_data == data:
return
st = os.lstat(path)
os.unlink(path)
with exp_backoff_fn(open, path, 'wb') as fo:
fo.write(new_data)
os.chmod(path, stat.S_IMODE(st.st_mode)) Unlinking the file keeps a copy of the the memory mapped file until the process end. A new file is created rather than replacing the contents of the file inplace. |
@ericdill The change is that python 3.5.2-4 was built with conda-build 2.x where binary prefix detection is opt-out rather than opt-in. The newer builds have binary prefixes in some of the shared libraries which need to be replaced when the package is installed in an environment. The older builds did not have these files correctly marked even though binary prefixes were present in the files. |
@jjhelmus Ahhh I see. Thanks |
Tested the unlink change and submitted as PR #58. I tested this on a linux-64 machine and was able to successfully create and install an installer which uses the Without the change in PR #58:
With change in PR #58:
|
I just merged #58, and am going to release 1.5.2 later today. |
@jjhelmus Thank you for figuring this out! @ilanschnell thanks for moving quickly on this! |
Just received the same return "Bus error (core dumped) when running conda update conda conda version: 4.3.23 I am not understanding the fix here. |
Hi there, thank you for your contribution! This issue has been automatically locked because it has not had recent activity after being closed. Please open a new issue if needed. Thanks! |
Hi constructor devs,
I am getting a bus error when using
conda.anaconda.org/anaconda
andconda.anaconda.org/conda-forge
as my channels in a construct.yaml. I have pared down the construct.yaml as far as it can goRunning the constructor that is produced by this construct.yaml produces the following error:
I tried to do a diff of the installer scripts produced when I remove conda-forge as a channel, but, as expected, that diff is pretty much inscrutable and filled with binary diffs 😞
cc @msarahan
[edit] Running constructor without conda-forge as a channel does work
The text was updated successfully, but these errors were encountered: