Open
Description
Describe the bug
When logging data from a python client and killing the python client mid process, the rerun viewer does not recover and is unable to display recordings from new connections.
To Reproduce
Steps to reproduce the behavior:
- Start rerun
- Connect with a python client using
rr.connect_grpc(f"rerun+http://{host_ip}:9876/proxy")
- Kill the python client while streaming data
- Restart client from step 2. -> the rerun visualizer no longer shows data from the second run
Expected behavior
Rerun shows data from the second run
Backtrace
Viewer logs
[2025-06-04T06:35:54Z DEBUG tonic::codec::decode] decoder inner stream error: Status { code: Unknown, message: "h2 protocol error: error reading a body from connection", source: Some(Error { inner: Status { code: Unknown, message: "h2 protocol error: error reading a body from connection", source: Some(hyper::Error(Body, Error { kind: Io(Custom { kind: BrokenPipe, error: "stream closed because of a broken pipe" }) })) } }) }
[2025-06-04T06:35:54Z ERROR re_grpc_server] Error while receiving messages: status: Unknown, message: "h2 protocol error: error reading a body from connection", details: [], metadata: MetadataMap { headers: {} }
Full log:
Full debug log of the viewer
$ RUST_LOG=debug rerun
[2025-06-04T06:48:46Z DEBUG rerun::commands::entrypoint] Detected 16 cores. Using 14 compute threads.
[2025-06-04T06:48:46Z DEBUG rerun::commands::entrypoint] Parsing memory limit for Viewer
[2025-06-04T06:48:46Z DEBUG re_memory::memory_limit] Setting memory limit to 16.4 GiB, which is 75% of total available memory (21.8 GiB).
[2025-06-04T06:48:46Z DEBUG rerun::commands::entrypoint] Parsing memory limit for gRPC server
[2025-06-04T06:48:46Z DEBUG re_memory::memory_limit] Setting memory limit to 5.5 GiB, which is 25% of total available memory (21.8 GiB).
[2025-06-04T06:48:46Z DEBUG eframe] Using the wgpu renderer
[2025-06-04T06:48:46Z INFO re_grpc_server] Listening for gRPC connections on 0.0.0.0:9876. Connect by running `rerun --connect rerun+http://127.0.0.1:9876/proxy`
[2025-06-04T06:48:46Z DEBUG eframe::native::wgpu_integration] Event::Resumed
[2025-06-04T06:48:46Z DEBUG eframe::native::file_storage] Loading app state from "C:\\Users\\<redacted>\\AppData\\Roaming\\rerun\\data\\app.ron"…
[2025-06-04T06:48:46Z DEBUG egui_wgpu::setup] Creating wgpu instance with backends Backends(VULKAN | GL | METAL)
[2025-06-04T06:48:47Z INFO egui_wgpu] There were 2 available wgpu adapters: {backend: Vulkan, device_type: IntegratedGpu, name: "AMD Radeon (TM) Graphics", driver: "AMD proprietary driver", driver_info: "24.3.1 (AMD proprietary shader compiler)", vendor: AMD (0x1002), device: 0x15E7}, {backend: Gl, device_type: Other, name: "AMD Radeon (TM) Graphics", driver_info: "4.6.0 Compatibility Profile Context 24.3.1.240216"}
[2025-06-04T06:48:47Z DEBUG egui_wgpu] Picked wgpu adapter: backend: Vulkan, device_type: IntegratedGpu, name: "AMD Radeon (TM) Graphics", driver: "AMD proprietary driver", driver_info: "24.3.1 (AMD proprietary shader compiler)", vendor: AMD (0x1002), device: 0x15E7
[2025-06-04T06:48:47Z DEBUG re_renderer::context] wgpu adapter backend: Vulkan, device_type: IntegratedGpu, name: "AMD Radeon (TM) Graphics", driver: "AMD proprietary driver", driver_info: "24.3.1 (AMD proprietary shader compiler)"
[2025-06-04T06:48:47Z WARN re_viewer::ui::welcome_screen::example_section] Failed to load examples: https://app.rerun.io/version/0.23.1/examples_manifest.json: Connection Failed: tls connection init failed: invalid peer certificate: UnknownIssuer
[2025-06-04T06:48:47Z WARN wgpu_hal::vulkan] Suboptimal present of frame 0
[2025-06-04T06:48:49Z DEBUG re_analytics::native::sink] Failed to send analytics down the sink: https://tel.rerun.io/: Connection Failed: tls connection init failed: invalid peer certificate: UnknownIssuer
[2025-06-04T06:49:13Z DEBUG tonic_web::service] kind="other h2" content_type=Some("application/grpc")
[2025-06-04T06:49:13Z DEBUG re_analytics::native::pipeline] dropped event, analytics channel is disconnected
[2025-06-04T06:49:13Z DEBUG egui::context] Ignoring call request_discard, because max_passes=2. Requested from [crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics, crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics, crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics, C:\Users\runneradmin\.cargo\registry\src\index.crates.io-6f17d22bba15001f\egui-0.31.1\src\grid.rs:452 new Grid, crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics, crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics, crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics, crates\viewer\re_ui\src\list_item\scope.rs:79 Missing re_ui::LayoutStatistics]
[2025-06-04T06:49:13Z DEBUG reqwest::connect] starting new connection: https://tile.openstreetmap.org/
[2025-06-04T06:49:13Z DEBUG reqwest::connect] starting new connection: https://tile.openstreetmap.org/
[2025-06-04T06:49:13Z DEBUG reqwest::connect] starting new connection: https://tile.openstreetmap.org/
[2025-06-04T06:49:13Z DEBUG reqwest::connect] starting new connection: https://tile.openstreetmap.org/
[2025-06-04T06:49:13Z DEBUG reqwest::connect] starting new connection: https://tile.openstreetmap.org/
[2025-06-04T06:49:13Z DEBUG reqwest::connect] starting new connection: https://tile.openstreetmap.org/
[2025-06-04T06:49:14Z DEBUG tonic::codec::decode] decoder inner stream error: Status { code: Unknown, message: "h2 protocol error: error reading a body from connection", source: Some(Error { inner: Status { code: Unknown, message: "h2 protocol error: error reading a body from connection", source: Some(hyper::Error(Body, Error { kind: Io(Custom { kind: BrokenPipe, error: "stream closed because of a broken pipe" }) })) } }) }
[2025-06-04T06:49:14Z ERROR re_grpc_server] Error while receiving messages: status: Unknown, message: "h2 protocol error: error reading a body from connection", details: [], metadata: MetadataMap { headers: {} }
[2025-06-04T06:49:18Z DEBUG re_viewer::app] Saved blueprint for <redacted>_20250604_084912 to "C:\\Users\\<redacted>\\AppData\\Roaming\\rerun\\data\\blueprints\\20240911_123354_mtcejw1.000064-001512_20250604_084912-3291aedc451ce35a.rbl"
Note: the TLS issues in the logs can be ignored, this is caused by running the viewer viewer behind a corporate proxy
Desktop (please complete the following information):
- OS: Windows 11 (Viewer), Ubuntu 22.04 (client)
Rerun version
Windows Host
> rerun --version
rerun-cli 0.23.1 (default map_view nasm native_viewer release web_viewer) [rustc 1.84.0 (9fc6b4312 2025-01-07), LLVM 19.1.5] x86_64-pc-windows-msvc release-0.23.1 87bdacb, built 2025-04-25T11:15:37Z
Video features: av1 default ffmpeg nasm serde
Client machine:
$rerun --version
rerun-cli 0.23.1 (default map_view nasm native_viewer release web_viewer) [rustc 1.84.0 (9fc6b4312 2025-01-07), LLVM 19.1.5] x86_64-unknown-linux-gnu release-0.23.1 87bdacb, built 2025-04-25T11:04:25Z
Video features: av1 default ffmpeg nasm serde
It seems that after the client connection was terminated mid process, the rerun viewer does not accept any new connections.