Skip to content
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

Already running instances of rakudo crash during rakudo upgrades #1554

Open
jkramer opened this issue Feb 22, 2018 · 1 comment
Open

Already running instances of rakudo crash during rakudo upgrades #1554

jkramer opened this issue Feb 22, 2018 · 1 comment
Labels

Comments

@jkramer
Copy link
Contributor

jkramer commented Feb 22, 2018

The Problem

When upgrading rakudo, rakudo processes started beforehand crash (and dump core) with a "bus error":

# time perl6 very-long-running-process.p6
zsh: bus error (core dumped)  perl6 very-long-running-process.p6
perl6 very-long-running-process.p6   16405.76s user 29.48s system 174% cpu 2:36:35.94 total

Expected Behavior

Presuming the script only did calculations in memory and didn't access and files/modules/... that could be modified/removed/overwritten during the upgrade process, the interpreter in memory should be independent from the binary etc. on disk so it shouldn't crash.

Actual Behavior

Crashes with a bus error (see above).

Steps to Reproduce

Have a script that runs for a long time (mine was doing lots of computations, although I'm not sure if this is necessary in order to reproduce the crash). While it's running, upgrade rakudo:

cd ~/rakudo && git checkout master && git pull && git checkout $(git describe --abbrev=0 --tags) &&   perl Configure.pl --gen-moar --gen-nqp --backends=moar &&   make && make install

Environment

  • Operating system: Linux 4.11.2-1-ARCH
  • Compiler version (perl6 -v): This is Rakudo version 2018.02 built on MoarVM version 2018.02 (after the upgrade)
@jkramer
Copy link
Contributor Author

jkramer commented Feb 23, 2018

I did some more testing to reproduce the problem. First, a perl6 -esleep or similar doesn't suffice, apparently it only crashes when it's actually doing something. I used this line for testing: perl6 -e'my $x; loop { $x++ }'

The command (from make install) that causes the crash seems to be this one:

cp -- dynext/libperl6_ops_moar.so $HOME/rakudo/install/share/perl6/runtime/dynext

Executing this command manually in the rakudo checkout directory (after a successful make) reproduced the crash for me every time. Hope this helps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants