Alpine Linux causes a segmentation fault
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- linux, rust
調査の方向性
Reproduce the crash with cargo run --example networking on Alpine Linux and inspect src/lib.rs around load_xlib_with_error_hook at lines 169-171 and its initializer at line 196. Use the provided gdb backtrace to investigate the null error representation; done means the networking example no longer segfaults on Alpine.
索引モデルが issue の本文から書いたものです。
説明
Seen in winit-block-on:
$ cargo run --example networking
Finished dev [unoptimized + debuginfo] target(s) in 0.08s
Running `target/debug/examples/networking`
[1] 17749 segmentation fault cargo run --example networking
gdb gives this backtrace:
(gdb) bt
#0 std::io::error::{impl#8}::fmt () at library/std/src/io/error.rs:951
#1 0x00007ffff7b16a1c in core::fmt::rt::Argument::fmt () at library/core/src/fmt/rt.rs:138
#2 core::fmt::write () at library/core/src/fmt/mod.rs:1094
#3 0x00007ffff7b0c054 in core::fmt::Write::write_fmt<alloc::string::String> ()
at library/core/src/fmt/mod.rs:192
#4 alloc::fmt::format::format_inner () at library/alloc/src/fmt.rs:610
#5 0x00007ffff76c6cb5 in alloc::fmt::format::{closure#0} ()
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/alloc/src/fmt.rs:614
#6 0x00007ffff76c66de in core::option::Option<&str>::map_or_else<&str, alloc::string::String, alloc::fmt::format::{closure_env#0}, fn(&str) -> alloc::string::String> (self=...,
default=..., f=0x0)
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/option.rs:1181
#7 0x00007ffff76c6c4f in alloc::fmt::format (args=...)
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/alloc/src/fmt.rs:614
#8 0x00007ffff76c73bf in tiny_xlib::XLIB___rust_ctor___ctor::initer::load_xlib_with_error_hook::error<std::io::error::Error> (e=...) at src/lib.rs:169
#9 0x00007ffff76c5fd3 in core::ops::function::FnOnce::call_once<fn(std::io::error::Error) -> std::io::error::Error, (std::io::error::Error)> ()
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/ops/function.rs:250
#10 0x00007ffff76c6a09 in core::result::Result<tiny_xlib::ffi::Xlib, std::io::error::Error>::map_err<tiny_xlib::ffi::Xlib, std::io::error::Error, std::io::error::Error, fn(std::io::error::Error) -> std::io::error::Error> (self=..., op=0x0)
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/result.rs:829
#11 0x00007ffff76c71e1 in tiny_xlib::XLIB___rust_ctor___ctor::initer::load_xlib_with_error_hook () at src/lib.rs:171
#12 0x00007ffff70d9fbe in tiny_xlib::XLIB___rust_ctor___ctor::initer () at src/lib.rs:196
#13 0x00007ffff7af9555 in libc_start_init () at ../src_musl/src/env/__libc_start_main.c:64
#14 0x00007ffff7af957a in libc_start_main_stage2 ()
at ../src_musl/src/env/__libc_start_main.c:92
#15 0x00007ffff70da064 in _start ()
Setting a breakpoint inside of the error printer gives me this:
(gdb) print e
$1 = std::io::error::Error {repr: std::io::error::repr_bitpacked::Repr (core::ptr::non_null::NonNull<()> {pointer: 0x0}, core::marker::PhantomData<std::io::error::ErrorData<alloc::boxed::Box<std::io::error::Custom, alloc::alloc::Global>>>)}
So it's some kind of weird niche issue. My guess is that somehow the dynamically linked functions are null when Alpine links them together, thus causing Rust to assume that it's somehow gotten a null IO error.
- 主要言語
- Rust
- スター
- 7
- フォーク
- 2
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
rust-windowing/tiny-xlib のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
rust-windowing/tiny-xlib#16 · コメント 3 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
rust-windowing/tiny-xlib#15 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
rust-windowing/tiny-xlib#11 ·
-
Flaky CI Testオープン
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
rust-windowing/tiny-xlib の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 3 日以内に返信
-
state:triage-needed
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Automattic/harper#4503 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
メンテナーはふだん 2 日以内に返信