Project

General

Profile

Bug #10008

conftest crashed: installing mri 2.1.2: EXC_BAD_ACCESS (SIGABRT)

Added by jaredbeck (Jared Beck) over 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
[ruby-core:63553]

Description

crash dump: https://gist.github.com/jaredbeck/be73c376b860d8d6eed9

cd ~/.rbenv
git log --oneline | head -n1
# 13a474c Get rid of explicit exit in fish branch of `rbenv-init`
cd plugins/ruby-build/
git log --oneline | head -n1
# c819790 ruby-build 20140702

but .. the install finished!

rbenv global 2.1.2
ruby --version
# ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
echo "puts '<3 ruby'" | ruby
# <3 ruby

Using xcode 5.1.1


Files

0001-proof-of-concept-for-bug-10008.patch (1.99 KB) 0001-proof-of-concept-for-bug-10008.patch Proof of concept patch for bug 10008 jaredbeck (Jared Beck), 07/12/2014 11:35 PM

Associated revisions

Revision 5e14a4c4
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 46796
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Revision 46796
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Revision 46796
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Revision 46796
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Revision 46796
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Revision 46796
Added by nobu (Nobuyoshi Nakada) over 5 years ago

configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Revision ea08099e
Added by nagachika (Tomoyuki Chikanaga) about 5 years ago

merge revision(s) r46796: [Backport #10008]

    * configure.in (rb_cv_broken_backtrace): exit with failure
      normally, no needs to abort.  [ruby-core:63678] [Bug #10008]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 47418
Added by nagachika (Tomoyuki Chikanaga) about 5 years ago

merge revision(s) r46796: [Backport #10008]

* configure.in (rb_cv_broken_backtrace): exit with failure
  normally, no needs to abort.  [ruby-core:63678] [Bug #10008]

Revision c44e4364
Added by nagachika (Tomoyuki Chikanaga) about 5 years ago

merge revision(s) r47327: [Backport #10008]

    * ext/zlib/zlib.c (gzfile_reset): preserve ZSTREAM_FLAG_GZFILE
      [Bug #10101]

    * test/zlib/test_zlib.rb (test_rewind): test each_byte

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 47419
Added by nagachika (Tomoyuki Chikanaga) about 5 years ago

merge revision(s) r47327: [Backport #10008]

* ext/zlib/zlib.c (gzfile_reset): preserve ZSTREAM_FLAG_GZFILE
  [Bug #10101]

* test/zlib/test_zlib.rb (test_rewind): test each_byte

History

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

Which conftest?
Some conftests are expected to segfault.

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Open to Feedback
  • Priority changed from Normal to 3

Updated by hsbt (Hiroshi SHIBATA) over 5 years ago

Is conftest part of debugger gem?

Updated by jaredbeck (Jared Beck) over 5 years ago

Steps to reproduce:

  1. rbenv uninstall 2.1.2
  2. rbenv install 2.1.2

Crash dump:
https://gist.github.com/jaredbeck/127e61aa73a16c614b6d

ruby_build log:
https://gist.github.com/jaredbeck/3f6de8e3e432a51ae707

versions:

gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)
rbenv: 13a474c
ruby-build: c819790 ruby-build 20140702

Updated by jaredbeck (Jared Beck) over 5 years ago

Simpler steps to reproduce:

  1. Download ruby 2.1.2 source
  2. ./configure

So, I don't think this has anything to do with ruby-build :)

Updated by jaredbeck (Jared Beck) over 5 years ago

Which conftest?

I think conftest is defined in the configure script. For me, it's around line 20376, which looks like:

cat confdefs.h - <<_ACEOF >conftest.$ac_ext

Furthermore, line 20389 defines a sigsegv function.

void sigsegv(int signum, siginfo_t *info, void *ctx){

This sigsegv function can be seen on line 3 of the "Dispatch queue" from the crash dump:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff8b3f7866 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff8f8df35c pthread_kill + 92
2 libsystem_c.dylib 0x00007fff9000ab1a abort + 125
3 conftest 0x000000010c2dee55 sigsegv + 37
4 libsystem_platform.dylib 0x00007fff8cfdd5aa _sigtramp + 26
5 ??? 000000000000000000 0 + 0
6 libdyld.dylib 0x00007fff8efa35fd start + 1

Finally, it may be relevant that my ./configure output reports "broken backtrace":

checking for broken backtrace... yes

I hope that helps!

Updated by jaredbeck (Jared Beck) over 5 years ago

If I replace the whole test for "broken backtrace" with a hardcoded value, then I can run ./configure without a crash.

See my proof of concept patch (attached) which can be compared to tag v2_1_2 in git.

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Feedback to Rejected

It makes no sense.

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Rejected to Open
  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: DONTNEED, 2.1: REQUIRED

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r46796.


configure.in: exit with failure

  • configure.in (rb_cv_broken_backtrace): exit with failure normally, no needs to abort. [ruby-core:63678] [Bug #10008]

Updated by nagachika (Tomoyuki Chikanaga) about 5 years ago

  • Backport changed from 2.0.0: DONTNEED, 2.1: REQUIRED to 2.0.0: DONTNEED, 2.1: DONE

Backported into ruby_2_1 branch at r47418.

Also available in: Atom PDF