Skip to content

feat(cli): show backtrace on panic if available#8647

Merged
siketyan merged 3 commits intonextfrom
feat/panic-backtrace
Jan 2, 2026
Merged

feat(cli): show backtrace on panic if available#8647
siketyan merged 3 commits intonextfrom
feat/panic-backtrace

Conversation

@siketyan
Copy link
Member

@siketyan siketyan commented Jan 2, 2026

Summary

Added the backtrace to the panic report if it's enabled and captured successfully (RUST_BACKTRACE=1 needs to be set on running).

Example
Biome encountered an unexpected error

This is a bug in Biome, not an error in your code, and we would appreciate it if you could report it to https://github.com/biomejs/biome/issues/ along with the following information to help us fixing the issue.

When opening the issue, please provide a minimal reproduction, or identify and share the file/code that triggers it. Without a way to reproduce the error, the error can't be fixed:

Source Location: /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_rowan/src/ast/mod.rs:206:13
Thread Name: biome::workspace_worker_2
Message: Tried to cast node with kind HTML_BOGUS as `"biome_html_syntax::generated::nodes::HtmlRoot"` but was unable to cast
Stack Trace:
   0: std::backtrace_rs::backtrace::libunwind::trace
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1: std::backtrace_rs::backtrace::trace_unsynchronized
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2: std::backtrace::Backtrace::create
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/backtrace.rs:331:13
   3: std::backtrace::Backtrace::capture
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/backtrace.rs:296:9
   4: panic_handler
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_cli/src/panic.rs:43:21
   5: call<fn(&std::panic::PanicHookInfo), (&std::panic::PanicHookInfo)>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:79:5
   6: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/alloc/src/boxed.rs:1999:9
   7: std::panicking::panic_with_hook
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:842:13
   8: std::panicking::panic_handler::{{closure}}
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:707:13
   9: std::sys::backtrace::__rust_end_short_backtrace
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/sys/backtrace.rs:174:18
  10: __rustc::rust_begin_unwind
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:698:5
  11: core::panicking::panic_fmt
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/core/src/panicking.rs:75:14
  12: {closure#0}<biome_html_syntax::generated::nodes::HtmlRoot>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_rowan/src/ast/mod.rs:206:13
  13: unwrap_or_else<biome_html_syntax::generated::nodes::HtmlRoot, biome_rowan::ast::AstNode::unwrap_cast::{closure_env#0}<biome_html_syntax::generated::nodes::HtmlRoot>>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:1061:21
  14: unwrap_cast<biome_html_syntax::generated::nodes::HtmlRoot>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_rowan/src/ast/mod.rs:205:28
  15: tree<biome_html_syntax::generated::nodes::HtmlRoot>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_parser/src/lib.rs:909:9
  16: tree<biome_html_syntax::generated::nodes::HtmlRoot>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_parser/src/lib.rs:828:38
  17: parse_embedded_nodes
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_service/src/file_handlers/html.rs:401:36
  18: parse_embedded_language_snippets
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_service/src/workspace/server.rs:650:22
  19: open_file_internal
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_service/src/workspace/server.rs:447:18
  20: open_file
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_service/src/workspace/server.rs:1213:14
  21: new<biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_cli/src/runner/process_file.rs:251:29
  22: execute<biome_cli::runner::impls::process_file::check::CheckProcessFile, biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_cli/src/runner/process_file.rs:180:34
  23: {closure#0}<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile, biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_cli/src/runner/handler.rs:114:36
  24: do_call<biome_cli::runner::handler::Handler::handle_path::{closure_env#0}<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile, biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>, core::result::Result<biome_cli::runner::process_file::FileStatus, biome_cli::runner::process_file::Message>>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:590:40
  25: ___rust_try
  26: catch_unwind<core::result::Result<biome_cli::runner::process_file::FileStatus, biome_cli::runner::process_file::Message>, biome_cli::runner::handler::Handler::handle_path::{closure_env#0}<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile, biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:553:19
  27: catch_unwind<biome_cli::runner::handler::Handler::handle_path::{closure_env#0}<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile, biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>, core::result::Result<biome_cli::runner::process_file::FileStatus, biome_cli::runner::process_file::Message>>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  28: handle_path<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile, biome_cli::runner::crawler::CrawlerOptions<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_cli/src/runner/handler.rs:114:15
  29: handle_path<biome_cli::runner::impls::handlers::default::DefaultHandler, biome_cli::runner::impls::process_file::check::CheckProcessFile>
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_cli/src/runner/crawler.rs:241:22
  30: {closure#0}
             at /Users/siketyan/.local/src/github.com/biomejs/biome/crates/biome_fs/src/fs/os.rs:220:21
  31: {closure#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>
             at /Users/siketyan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/scope/mod.rs:531:57
  32: call_once<(), rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
  33: do_call<core::panic::unwind_safe::AssertUnwindSafe<rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>>, ()>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:590:40
  34: ___rust_try
  35: catch_unwind<(), core::panic::unwind_safe::AssertUnwindSafe<rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>>>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:553:19
  36: catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>>, ()>
             at /Users/siketyan/.rustup/toolchains/1.91.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
  37: halt_unwinding<rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>, ()>
             at /Users/siketyan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/unwind.rs:17:5
  38: execute_job_closure<rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>, ()>
             at /Users/siketyan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/scope/mod.rs:693:28
  39: execute_job<rayon_core::scope::{impl#0}::spawn::{closure#0}::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>>
             at /Users/siketyan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/scope/mod.rs:683:29
  40: {closure#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>
             at /Users/siketyan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/scope/mod.rs:531:13
  41: execute<rayon_core::scope::{impl#0}::spawn::{closure_env#0}<biome_fs::fs::os::{impl#5}::handle::{closure_env#0}>>
             at /Users/siketyan/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rayon-core-1.13.0/src/job.rs:169:9
  42: rayon_core::job::JobRef::execute
  43: rayon_core::registry::WorkerThread::execute
  44: rayon_core::registry::WorkerThread::wait_until_cold
  45: rayon_core::registry::WorkerThread::wait_until
  46: rayon_core::registry::WorkerThread::wait_until_out_of_work
  47: rayon_core::registry::main_loop
  48: rayon_core::registry::ThreadBuilder::run
  49: <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn::{{closure}}
  50: std::sys::backtrace::__rust_begin_short_backtrace
  51: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
  52: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
  53: std::panicking::catch_unwind::do_call
  54: ___rust_try
  55: std::thread::Builder::spawn_unchecked_::{{closure}}
  56: core::ops::function::FnOnce::call_once{{vtable.shim}}
  57: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/alloc/src/boxed.rs:1985:9
  58: std::sys::thread::unix::Thread::new::thread_start
             at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/sys/thread/unix.rs:126:17
  59: __pthread_cond_wait

Test Plan

Manually tested

Docs

biomejs/website#3770

@changeset-bot
Copy link

changeset-bot bot commented Jan 2, 2026

🦋 Changeset detected

Latest commit: a16b961

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 14 packages
Name Type
@biomejs/biome Minor
@biomejs/cli-win32-x64 Minor
@biomejs/cli-win32-arm64 Minor
@biomejs/cli-darwin-x64 Minor
@biomejs/cli-darwin-arm64 Minor
@biomejs/cli-linux-x64 Minor
@biomejs/cli-linux-arm64 Minor
@biomejs/cli-linux-x64-musl Minor
@biomejs/cli-linux-arm64-musl Minor
@biomejs/wasm-web Minor
@biomejs/wasm-bundler Minor
@biomejs/wasm-nodejs Minor
@biomejs/backend-jsonrpc Patch
@biomejs/js-api Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions bot added the A-CLI Area: CLI label Jan 2, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 2, 2026

Walkthrough

Introduces a dedicated panic handler flow: a new write_error function builds the panic message into a buffer and returns it; the panic handler writes that buffer to stderr and to the tracing log. Adds backtrace capture using Backtrace/BacktraceStatus and conditionally appends either the captured stack trace, guidance to re-run with RUST_BACKTRACE=1, or "Not Supported". Replaces prior inline writes and unwrap calls with ? error propagation. Adds a changeset file documenting the behavioural improvement. No public/exported APIs changed.

Suggested reviewers

  • dyc3

Pre-merge checks and finishing touches

✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarises the main change: adding backtrace output to panic reports when available, which is the core purpose of this PR.
Description check ✅ Passed The description is directly relevant, explaining what was added (backtrace on panic), how to enable it (RUST_BACKTRACE=1), and includes a concrete example showing the new output.
✨ Finishing touches
  • 📝 Generate docstrings

Comment @coderabbitai help to get the list of available commands and usage tips.

@siketyan siketyan requested review from a team January 2, 2026 08:21
Copy link
Member

@ematipico ematipico left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we should document this on our website. It's a pity we can't add it via bpaf though

@siketyan
Copy link
Member Author

siketyan commented Jan 2, 2026

@ematipico Added in biomejs/website#3770, I am not sure if this is the right place to add though

@siketyan siketyan requested a review from ematipico January 2, 2026 09:01
@ematipico
Copy link
Member

Yes it's correct :)

Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
Copy link
Contributor

@dyc3 dyc3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh good, I was wishing we had this recently!

@@ -0,0 +1,9 @@
---
"@biomejs/biome": minor
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any chance this could be a patch instead of a minor? It's technically a new feature, but I would love to have this available on main.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could add the code in main, and the changeset + docs in next

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be honest I would still target the next branch to keep it simple. Let's just ship the next minor if we want this (and other new features) soon.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
crates/biome_cli/src/panic.rs (2)

14-24: Well-structured panic handler flow.

The refactoring cleanly separates message construction from output. Writing to stderr before tracing is defensive—if tracing panics, users still see the error.

Minor suggestion: Consider a more descriptive expect message on line 15, e.g., "Failed to format panic message", though in practice String writes cannot fail except under extreme memory pressure.


26-79: Consider adding documentation.

While not critical, rustdoc comments on write_error would improve maintainability—describing its purpose (formats panic information with optional backtrace) and return value (formatted string or fmt::Error).

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 76f1707 and a16b961.

📒 Files selected for processing (1)
  • crates/biome_cli/src/panic.rs
🧰 Additional context used
📓 Path-based instructions (1)
**/*.rs

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.rs: Use inline rustdoc documentation for rules, assists, and their options
Use the dbg!() macro for debugging output in Rust tests and code
Use doc tests (doctest) format with code blocks in rustdoc comments; ensure assertions pass in tests

Files:

  • crates/biome_cli/src/panic.rs
🧠 Learnings (6)
📚 Learning: 2025-11-24T18:04:57.309Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_diagnostics/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:04:57.309Z
Learning: Applies to crates/biome_diagnostics/**/*.rs : Use helper types from the biome_diagnostics::v2 module (CodeFrameAdvice, CommandAdvice, DiffAdvice, LogAdvice) or implement the Advices trait yourself for custom advice handling

Applied to files:

  • crates/biome_cli/src/panic.rs
📚 Learning: 2026-01-02T14:58:16.514Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2026-01-02T14:58:16.514Z
Learning: Applies to crates/biome_analyze/**/*_analyze/**/src/lint/**/*.rs : Implement the `diagnostic` function to provide error messages explaining what the error is, why it is triggered, and what the user should do

Applied to files:

  • crates/biome_cli/src/panic.rs
📚 Learning: 2025-11-24T18:06:03.545Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:06:03.545Z
Learning: Applies to crates/biome_parser/**/src/**/*.rs : Implement error recovery in list parsing using `or_recover()` to wrap unparseable tokens in a `BOGUS_*` node and consume tokens until a recovery token is found

Applied to files:

  • crates/biome_cli/src/panic.rs
📚 Learning: 2025-11-24T18:06:03.545Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:06:03.545Z
Learning: Applies to crates/biome_parser/**/src/**/*.rs : Use `ParseSeparatedList` and `ParseNodeList` for parsing lists with error recovery to avoid infinite loops

Applied to files:

  • crates/biome_cli/src/panic.rs
📚 Learning: 2025-12-21T21:15:03.796Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-12-21T21:15:03.796Z
Learning: Applies to **/*.rs : Use the `dbg!()` macro for debugging output in Rust tests and code

Applied to files:

  • crates/biome_cli/src/panic.rs
📚 Learning: 2025-11-24T18:05:27.810Z
Learnt from: CR
Repo: biomejs/biome PR: 0
File: crates/biome_js_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-11-24T18:05:27.810Z
Learning: Applies to crates/biome_js_formatter/**/*.rs : Use the `dbg_write!` macro to debug formatter output instead of other logging methods

Applied to files:

  • crates/biome_cli/src/panic.rs
🧬 Code graph analysis (1)
crates/biome_cli/src/panic.rs (1)
crates/biome_diagnostics/src/display/backtrace.rs (1)
  • capture (29-33)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
  • GitHub Check: Lint project (depot-windows-2022)
  • GitHub Check: Documentation
  • GitHub Check: autofix
  • GitHub Check: Check Dependencies
  • GitHub Check: Test (depot-windows-2022-16)
  • GitHub Check: End-to-end tests
  • GitHub Check: Test (depot-ubuntu-24.04-arm-16)
🔇 Additional comments (3)
crates/biome_cli/src/panic.rs (3)

1-6: LGTM!

The backtrace imports are correctly added from std::backtrace and align with the PR's goal to expose stack traces when RUST_BACKTRACE=1 is enabled.


26-59: Excellent refactoring with consistent error handling.

Extracting write_error improves testability and maintainability. The consistent use of ? for error propagation is more idiomatic than the .expect() calls suggested in past review comments—since the caller already handles the Result, this approach is cleaner.


61-76: Solid backtrace implementation with good user guidance.

The conditional backtrace handling is well-structured:

  • Shows the trace when captured
  • Provides actionable guidance when disabled
  • Handles unsupported platforms gracefully

The unconditional Backtrace::capture() call is appropriate—when backtraces are disabled, it returns immediately without overhead.

@siketyan siketyan merged commit 4c7c06f into next Jan 2, 2026
12 checks passed
@siketyan siketyan deleted the feat/panic-backtrace branch January 2, 2026 16:30
@pacak
Copy link

pacak commented Jan 3, 2026

I believe we should document this on our website. It's a pity we can't add it via bpaf though

Hey, I'm working on a new version that should make more stuff possible. Do you have a wish list?

@github-actions github-actions bot mentioned this pull request Feb 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CLI Area: CLI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants