DEP8 segfault on arm64
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
glibc (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
ruby-ferret (Ubuntu) |
Fix Released
|
Low
|
Unassigned | ||
ruby2.5 (Ubuntu) |
Invalid
|
High
|
Unassigned |
Bug Description
DEP8 tests are segfaulting on arm64:
...Stack trace:
Not available
E
=======
Error: test_key_
StandardError: Signal occurred at <global.c>:422 in sighandler_crash
Exiting on signal SIGSEGV (11)
/tmp/autopkgtes
/tmp/autopkgtes
199: def test_key_
200: fs_path = File.expand_
201:
=> 202: index = Index.new(:path => fs_path, :key => :my_id, :create => true)
203: [
204: {:my_id => "three", :id => "me"},
205: {:my_id => "one", :field2 => "three"},
=======
Closest I got to debugging this is:
#0 0x0000ffffbf5a0744 in generic_ivar_get (undef=52, id=85987, obj=<optimized out>) at variable.c:990
index = 187649990798752
ivtbl = 0xaaaaab0b2da0
ivtbl = <optimized out>
index = <optimized out>
ret = <optimized out>
#1 rb_ivar_lookup (obj=<optimized out>, id=id@entry=85987, undef=undef@
val = <optimized out>
ptr = <optimized out>
len = <optimized out>
index = 187649990798752
#2 0x0000ffffbf5a15e0 in rb_ivar_lookup (undef=52, id=85987, obj=<optimized out>) at variable.c:1184
val = <optimized out>
len = <optimized out>
ptr = <optimized out>
index = <optimized out>
val = <optimized out>
ptr = <optimized out>
len = <optimized out>
index = <optimized out>
#3 rb_ivar_get (obj=<optimized out>, id=85987) at variable.c:1214
iv = <optimized out>
#4 0x0000ffffbeb1c12c in frb_fsdir_new (argc=<optimized out>, argv=<optimized out>, klass=<optimized out>) at r_store.c:375
ref_cnt = <optimized out>
self = 187649991624280
rpath = 187649996041240
rcreate = <optimized out>
store = 0xaaaaab391410
create = <optimized out>
verify = <optimized out>
The full stack trace has 85 frames.
The NULL iv_index_tbl comes from;
st_table *iv_index_tbl = RCLASS_
Related branches
- Steve Langasek: Approve
-
Diff: 39 lines (+7/-0)1 file modifiedubuntu-release (+7/-0)
tags: | added: update-excuse |
Changed in ruby-ferret (Ubuntu): | |
status: | New → Triaged |
Changed in ruby2.5 (Ubuntu): | |
status: | New → Triaged |
Changed in ruby-ferret (Ubuntu): | |
importance: | Undecided → High |
Changed in ruby2.5 (Ubuntu): | |
importance: | Undecided → High |
tags: | added: server-next |
Changed in ruby-ferret (Ubuntu): | |
assignee: | nobody → Lucas Kanashiro (lucaskanashiro) |
Changed in ruby2.5 (Ubuntu): | |
status: | Triaged → Invalid |
If I change this test to use another directory:
test/unit/ index/tc_ index.rb: used_for_ id_field path(File. join(File. dirname( __FILE_ _), '../../ temp/fsdir' ))
def test_key_
fs_path = File.expand_
...
Like: path(File. join(File. dirname( __FILE_ _), '../../ temp/fsdir2' ))
fs_path = File.expand_
Then the test passes without a segfault on arm64.