kazuki0824 / recisdb-rs

recisdb-rs and b25-sys are more convenient Rust wrapper for libaribb25. recisdb can read both Unix character device-based and BonDriver-based TV sources.
GNU General Public License v3.0
78 stars 4 forks source link

Rust 1.78以降でコンパイルした場合、B25デコード処理でpanicとなる #118

Closed masato-yoshi-dnsalias-com closed 2 months ago

masato-yoshi-dnsalias-com commented 2 months ago

Rustの仕様変更により、「ptr::copy_nonoverlapping」の引数にnullが許容されなくなったため。B-CASカードからのget処理で データが取得できなかったケースで(put直後のgetではデータが返ってこない)エラーとなる。

'./target/debug/recisdb tune --device /dev/pt3video2 --channel T18 /tmp/aaa [2024-08-17T12:57:09Z INFO recisdb::utils] recisdb version 1.2.1 [2024-08-17T12:57:09Z INFO recisdb::commands] Tuner: /dev/pt3video2 [2024-08-17T12:57:09Z INFO recisdb::commands] Channel: T18 / Terrestrial: 18 [2024-08-17T12:57:09Z INFO recisdb::commands] Recording duration: Infinite ch.ch_type = Terrestrial(18, AsIs) ioctl_channel=68, slot=0 [2024-08-17T12:57:10Z INFO recisdb::commands] Decode: Enabled libaribb25: detected card reader name: NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00 libaribb25: connected card reader name: NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00 [2024-08-17T12:57:10Z INFO recisdb::commands] Recording... thread 'main' panicked at library/core/src/panicking.rs:219:5: unsafe precondition(s) violated: ptr::copy_nonoverlapping requires that both pointer arguments are aligned and non-null and the specified memory ranges do not overlap note: run with RUST_BACKTRACE=1 environment variable to display a backtrace thread caused non-unwinding panic. aborting. Aborted`

https://github.com/sequenceplanner/r2r/issues/96

masato-yoshi-dnsalias-com commented 2 months ago

最新コーデの実行結果です。 target/debug/recisdb tune --device /dev/pt3video2 --channel T27 /tmp/aaaaa

[2024-09-01T08:28:07Z INFO  recisdb::utils] recisdb version 1.2.2
[2024-09-01T08:28:07Z INFO  recisdb::commands] Tuner: /dev/pt3video2
[2024-09-01T08:28:07Z INFO  recisdb::commands] Channel: T27 / Terrestrial: 27
[2024-09-01T08:28:07Z INFO  recisdb::commands] Recording duration: Infinite
[2024-09-01T08:28:08Z INFO  recisdb::commands] Decode: Enabled
libaribb25: detected card reader name:
NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00
libaribb25: connected card reader name:
NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00
[2024-09-01T08:28:09Z INFO  recisdb::commands] Recording...
thread 'main' panicked at library/core/src/panicking.rs:219:5:
unsafe precondition(s) violated: ptr::copy_nonoverlapping requires that both pointer arguments are aligned and non-null and the specified memory ranges do not overlap
stack backtrace:
   0: rust_begin_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:652:5
   1: core::panicking::panic_nounwind_fmt::runtime
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:110:18
   2: core::panicking::panic_nounwind_fmt
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:120:5
   3: core::panicking::panic_nounwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:219:5
   4: core::intrinsics::copy_nonoverlapping::precondition_check
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ub_checks.rs:68:21
   5: core::intrinsics::copy_nonoverlapping
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ub_checks.rs:75:17
   6: <b25_sys::bindings::InnerDecoder as std::io::Read>::read
             at ./b25-sys/src/bindings/mod.rs:143:13
   7: <b25_sys::StreamDecoder as std::io::Read>::read
             at ./b25-sys/src/lib.rs:89:9
   8: <futures_util::io::allow_std::AllowStdIo<T> as futures_io::if_std::AsyncRead>::poll_read
             at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/io/allow_std.rs:142:44
   9: <futures_util::io::buf_reader::BufReader<R> as futures_io::if_std::AsyncBufRead>::poll_fill_buf
             at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/io/buf_reader.rs:157:32
  10: <recisdb::io::AsyncInOutTriple as core::future::future::Future>::poll
             at ./recisdb-rs/src/io.rs:129:41
  11: futures_executor::local_pool::block_on::{{closure}}
             at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:317:23
  12: futures_executor::local_pool::run_executor::{{closure}}
             at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:90:37
  13: std::thread::local::LocalKey<T>::try_with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:283:12
  14: std::thread::local::LocalKey<T>::with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:260:9
  15: futures_executor::local_pool::run_executor
             at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:86:5
  16: futures_executor::local_pool::block_on
             at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-executor-0.3.30/src/local_pool.rs:317:5
  17: recisdb::main
             at ./recisdb-rs/src/main.rs:54:21
  18: core::ops::function::FnOnce::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread caused non-unwinding panic. aborting.
Aborted
kazuki0824 commented 2 months ago

@masato-yoshi-dnsalias-com 情報誠にありがとうございます。

121で当方にて効果確認しました。ご確認お願いします。