Issue #12917 has been reported by Duncan Bayne.

----------------------------------------
Bug #12917: Segfault in list_ids_bsearch
https://bugs.ruby-lang.org/issues/12917

* Author: Duncan Bayne
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Intermittently (maybe every five builds or so?) my CI build is causing Ruby to crash.

I have rebuilt Ruby and debugging symbols from source, with no optimisations, in order to take a look with GDB.  The problem persists with this build, as well as one with optimisations on and symbols off.

~~~
#0  0x00007f0353a105f7 in raise () from /lib64/libc.so.6
#1  0x00007f0353a11ce8 in abort () from /lib64/libc.so.6
#2  0x00005634b80e3766 in die () at error.c:407
#3  0x00005634b80e39b7 in rb_bug_context (ctx=0x5634b8fa1a00, fmt=0x5634b811b08f "Segmentation fault at %p") at error.c:437
#4  0x00005634b7ff25bf in sigsegv (sig=11, info=0x5634b8fa1b30, ctx=0x5634b8fa1a00) at signal.c:890
#5  <signal handler called>
#6  0x00005634b802082e in list_ids_bsearch (keys=0x21, key=189, num=33) at id_table.c:567
...
(gdb) frame 6
#6  0x00005634b802082e in list_ids_bsearch (keys=0x21, key=189, num=33) at id_table.c:567
567		    id_key_t kp = keys[p];
(gdb) list
562
563		if (min >= max) {
564		    break;
565		}
566		else {
567		    id_key_t kp = keys[p];
568		    assert(p < max);
569		    assert(p >= min);
570
571		    if      (kp > key) max = p;
~~~

I've attached the full control frame information produced during one of the failing CI builds.

---Files--------------------------------
segfault.log (671 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>