Segfault when exiting due to `Fiddle::MemoryView`
还没有人认领这个 Issue。
评估
调研方向
首先使用提供的 Ruby 脚本复现退出时的崩溃,并在 GDB 下将其与 GC.start 这一变通方案进行比较。跟踪经过 memory_view.c 和 ext/fiddle/memory_view.c 的终结路径;当脚本退出时不会发生 segmentation fault,并且该回归由适当的测试覆盖时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
The following script causes a segfault when exiting:
$workaround = false
require 'fiddle'
Fiddle::MemoryView.new(Fiddle::Pointer["foo"])
GC.start if $workaround
A backtrace from GDB:
Thread 1 received signal SIGSEGV, Segmentation fault.
rb_class_get_superclass (klass=klass@entry=0) at ../object.c:2252
2252 return RCLASS(klass)->super;
(gdb) bt
#0 rb_class_get_superclass (klass=klass@entry=0) at ../object.c:2252
#1 0x0000000589c03ae3 in lookup_memory_view_entry (klass=0) at ../memory_view.c:784
#2 0x0000000589c04921 in rb_memory_view_release (view=view@entry=0x800157770) at ../memory_view.c:836
#3 0x0000000596513c13 in fiddle_memview_free (ptr=0x800157770) at ../../../ext/fiddle/memory_view.c:41
#4 0x0000000589bd9226 in run_final (zombie=123145300985120, objspace=0x800052bc0) at ../gc.c:4040
#5 finalize_list (objspace=objspace@entry=0x800052bc0, zombie=123145300985120) at ../gc.c:4059
#6 0x0000000589bdd6e1 in rb_objspace_call_finalizer (objspace=0x800052bc0) at ../gc.c:4222
#7 0x0000000589bc5f37 in rb_ec_finalize (ec=ec@entry=0x800053520) at ../eval.c:187
#8 0x0000000589bc8e25 in rb_ec_cleanup (ec=ec@entry=0x800053520, ex=<optimized out>) at ../eval.c:298
#9 0x0000000589bc8fa8 in ruby_run_node (n=0x6fffffed3068) at ../eval.c:379
#10 0x00000001004017ad in main (argc=<optimized out>, argv=<optimized out>) at ../main.c:47
Invoking a GC before exiting seems to be a workaround.
ruby -v: ruby 3.1.0dev (2021-05-21T09:28:24Z master 50a534a152) [x86_64-linux]
- 主要语言
- Ruby
- 星标
- 195
- 派生
- 53
- 平均合并
- 23 小时 57 分钟
- 30 天内合并 PR
- 1
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
ruby/fiddle 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 52/100
-
难度 3/5 1-2 天 新手友好度 68/100
-
难度 5/5 一周以上 新手友好度 30/100
-
难度 2/5 1-3 小时 新手友好度 45/100
-
难度 2/5 1-3 小时 新手友好度 52/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
palladius/rails8-app-on-gcp#145 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
riscv/riscv-unified-db#2624 · 1 个 reaction ·
-
难度 1/5 1 小时以内 新手友好度 88/100