Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make reader more resilient against temporary hardware failures #80

Closed
mthmulders opened this issue Nov 17, 2023 · 0 comments · Fixed by #81
Closed

Make reader more resilient against temporary hardware failures #80

mthmulders opened this issue Nov 17, 2023 · 0 comments · Fixed by #81

Comments

@mthmulders
Copy link
Owner

Over the past few days, I've seen a few situations where the reader crashed, probably due to hardware issues. I'd prefer if the reader could keep on running, potentially ignoring the telegram it was reading at that point. Modern readers produce so much data - it doesn't matter to skip one or two telegrams.

Backtrace of one such crashes:

Nov 16 07:25:23 raspberrypi0 dsmr-rs[1679]: thread 'main' panicked at src/dsmr/reader.rs:93:39:
Nov 16 07:25:23 raspberrypi0 dsmr-rs[1679]: Could not read data: Custom { kind: BrokenPipe, error: "Broken pipe" }
Nov 16 07:25:23 raspberrypi0 dsmr-rs[1679]: stack backtrace:
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    0:   0x31a258 - std::backtrace_rs::backtrace::libunwind::trace::h515859bb658ed487
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    1:   0x31a258 - std::backtrace_rs::backtrace::trace_unsynchronized::h0a1947d9a9b8d1c5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    2:   0x31a258 - std::sys_common::backtrace::_print_fmt::h359bda2eaa7aed29
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:67:5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    3:   0x31a258 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h03b334582d2eabf9
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:44:22
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    4:   0x35cf54 - core::fmt::rt::Argument::fmt::h8f4288e050a186cd
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/rt.rs:138:9
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    5:   0x35cf54 - core::fmt::write::h6c67e6db70ce0dd0
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/mod.rs:1094:21
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    6:   0x316ee8 - std::io::Write::write_fmt::h4e22e4d4bb7f13fb
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/mod.rs:1714:15
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    7:   0x31a06c - std::sys_common::backtrace::_print::hffa99dba2aaf2c98
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:47:5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    8:   0x31a06c - std::sys_common::backtrace::print::hb16d796b247e5a50
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:34:9
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:    9:   0x31b964 - std::panicking::default_hook::{{closure}}::he77a0709893ec668
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:270:22
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   10:   0x31b5fc - std::panicking::default_hook::h49b0904f8be06a8e
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:290:9
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   11:   0x31bf2c - std::panicking::rust_panic_with_hook::h89eaa5aff116fe48
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:707:13
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   12:   0x31bd7c - std::panicking::begin_panic_handler::{{closure}}::h8b1189c65c5de6f5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:599:13
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   13:   0x31a80c - std::sys_common::backtrace::__rust_end_short_backtrace::he93934aa008a9ef2
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:170:18
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   14:   0x31bb30 - rust_begin_unwind
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   15:    0x1c628 - core::panicking::panic_fmt::h28dde4b1b0b4216d
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   16:    0x1ca34 - core::result::unwrap_failed::h404c9384831cb05d
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/result.rs:1652:5
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   17:    0x266e8 - dsmr_rs::dsmr::reader::connect_to_meter::h08e2d2c6e3d47ddf
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   18:    0x33f3c - dsmr_rs::main::ha22b94f170ca9b90
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   19:    0x2fd50 - std::sys_common::backtrace::__rust_begin_short_backtrace::h1d6fa7f68db204e6
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   20:    0x30158 - std::rt::lang_start::{{closure}}::hf82261084afd30cf
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   21:   0x313370 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h6608113e5524563c
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/ops/function.rs:284:13
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   22:   0x313370 - std::panicking::try::do_call::hd49ab81d7c139d9f
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:502:40
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   23:   0x313370 - std::panicking::try::hf8f762b7f76136b9
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:466:19
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   24:   0x313370 - std::panic::catch_unwind::h5f7dedf1361ec729
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panic.rs:142:14
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   25:   0x313370 - std::rt::lang_start_internal::{{closure}}::h3545d134b825bcd3
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/rt.rs:148:48
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   26:   0x313370 - std::panicking::try::do_call::h4d0592b0c4cd1658
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:502:40
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   27:   0x313370 - std::panicking::try::hfdd38b93b7c6efce
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:466:19
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   28:   0x313370 - std::panic::catch_unwind::ha48109ebc0290768
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panic.rs:142:14
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   29:   0x313370 - std::rt::lang_start_internal::hc177a9ec8152a5a7
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:                        at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/rt.rs:148:20
Nov 16 07:25:24 raspberrypi0 dsmr-rs[1679]:   30:    0x342e4 - main
mthmulders added a commit that referenced this issue Nov 20, 2023
* Improve resilience against serial line read errors
* Rust formatting
* Fix Clippy warning

Fixes #80.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant