ambitious-portugal-31008
08/22/2025, 7:32 PMserve_grpc_opts
function.
I pass MemoryLimit::parse("2GB")
(also tried with ::from_bytes
and the byte count), but my rerun server process goes wild with memory usage. It basically continues to accumulate memory until the OS kills it or hangs (see screenshot it's already at around 25Gbyte). I run it in a Docker container on Ubuntu, if that matters.
The web-viewer recording itself hovers around ~2Gbyte, so that is good. But if the server runs OOM that doesn't help much.
Is there something I misunderstand or am missing about the configurable memory limits?
On code level, this is all I am doing:
let rec = RecordingStreamBuilder::new("test")
.recording_id("test-recording")
.serve_grpc_opts("0.0.0.0", 9876, MemoryLimit::parse("2GB")?)?;
loop {
std::thread::park();
}
https://cdn.discordapp.com/attachments/1408534249694302229/1408534249858007162/CleanShot_2025-08-22_at_12.25.53.png?ex=68aa173e&is=68a8c5be&hm=4d3f24a0470516d847807d07eab5868c7d21a2a8be971f681b61543a5d73c42b&
https://cdn.discordapp.com/attachments/1408534249694302229/1408534250340483142/CleanShot_2025-08-22_at_12.26.022x.png?ex=68aa173e&is=68a8c5be&hm=a266a0240ef24cea32cad8e490a29efd4226c8dd394920136df51301c65c7f83&delightful-pencil-64205
08/21/2025, 3:43 PMmysterious-beard-55128
08/21/2025, 10:45 AMkind-kitchen-2583
08/20/2025, 1:13 AMaverage-appointment-40329
08/15/2025, 7:24 PMLinkAxis.Independent
works well, but LinkAxis.LinkGlobal
doesn't log any data. Attached a screenshot for Independent vs Global link.
Is there anything wrong with the way I am logging the data?
Here's how I have the data logged:
For each entity:
- Fetch timestamps and values using fetch_data(entity_path, start_time, end_time)
- Send data to Rerun:
rr.send_columns(
entity_path,
indexes=[rr.TimeColumn("time", timestamp=timestamps)],
columns=rr.Scalars.columns(scalars=values),
)
Build a list of views:
- For each panel:
rrb.TimeSeriesView(
origin="/",
name=panel["name"],
contents=entity_paths,
axis_x=rrb.archetypes.TimeAxis(
link=rrb.components.LinkAxis.LinkGlobal
),
)
Arrange views into a grid layout:
grid = rrb.Grid(*views, grid_columns=1)
Send the blueprint to Rerun:
rr.send_blueprint(
rrb.Blueprint(
grid,
collapse_panels=True,
),
make_active=True,
)
https://cdn.discordapp.com/attachments/1405995563413143694/1405995564037968035/Screenshot_2025-08-15_at_3.22.02_PM.png?ex=68a0dae8&is=689f8968&hm=164bd9c87ac6d25e2db3d7de055eab4b591ce43b43f1429e9c3f6b466ba0ff8f&
https://cdn.discordapp.com/attachments/1405995563413143694/1405995564444946473/Screenshot_2025-08-15_at_3.24.03_PM.png?ex=68a0dae8&is=689f8968&hm=89724618fee1ed6db1659b575c4df51270ba77b34865be98b282ae792325e7ae&dry-crowd-37372
08/12/2025, 9:05 PM"""Demonstrates how to log data to a gRPC server and connect the web viewer to it."""
import time
import rerun as rr
rr.init("rerun_example_serve_web_viewer")
# Start a gRPC server and use it as log sink.
server_uri = rr.serve_grpc()
# Connect the web viewer to the gRPC server and open it in the browser
rr.serve_web_viewer(connect_to=server_uri)
# Log some data to the gRPC server.
rr.log("data", rr.Boxes3D(half_sizes=[2.0, 2.0, 1.0]))
# Keep server running. If we cancel it too early, data may never arrive in the browser.
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nShutting down server...")
However no data shows up in the web viewer and it gives me the error "Data source rerun+http://127.0.0.1:9876/proxy has left unexpectedly: gRPC error, message: "js api error: TypeError: NetworkError when attempting to fetch resource.""fierce-rain-16540
08/12/2025, 1:45 PMrr.log
calls below?
Thanks for your help!
Tim
python
def _log_to_rerun(payload: tuple) -> None:
rec, seq, rgb_items, depth_items, proprio_items = payload
rr.set_time(
timeline="episode_step",
sequence=seq,
recording=rec,
)
for path, frame in rgb_items:
rr.log(
path,
rr.Image(frame),
recording=rec,
)
for path, frame in depth_items:
rr.log(
path,
rr.DepthImage(frame, meter=1000.0, depth_range=(0.0, 1500.0)),
recording=rec,
)
for prop_key, proprio_frame in proprio_items:
for dim in range(proprio_frame.shape[-1]):
rr.log(
f"{prop_key}/d{dim}",
rr.Scalars(proprio_frame[..., dim]),
recording=rec,
)
little-portugal-67786
08/10/2025, 12:00 PMimport rerun as rr
rr.init("test_app", spawn=False)
# 1. Start the gRPC and web servers
grpc_uri = rr.serve_grpc()
rr.serve_web_viewer(connect_to=grpc_uri)
# 2. Log the data (this adds it to a buffer)
rr.log("my_points", rr.Points2D([[0, 0], [1, 1], [2, 2]]))
What did I miss here?rough-application-45455
08/06/2025, 8:04 PMhttp://<SERVER_IP>:9090/?url=rerun%2Bhttp%3A%2F%2F<SERVER_IP>%3A9876%2Fproxy
. The only way I found this URL is from the CLI when I used --serve-web
.
Using http://<SERVER_IP>:9090/?url=rerun+http://<SERVER_IP>:9876/proxy
works in a browser on the pi using localhost
but I can't seem to get it to work in a browser on my remote machine without using the URL above. Is there a more generic URL I can use? I've been looking through the docs with no success. Thanks in advance!modern-intern-46457
08/05/2025, 12:20 PM// Create the RecordingStream for rerun.
recording_stream_ = std::make_shared<rerun::RecordingStream>("DataProcessor");
// Spawn a viewer.
recording_stream_->spawn().exit_on_failure();
recording_stream_->log("Input Image",
rerun::Image(rerun::borrow(cv_input_rgb.data, cv_input_rgb.total() * cv_input_rgb.elemSize()),
rerun::WidthHeight(static_cast<uint32_t>(cv_input_rgb.cols),
static_cast<uint32_t>(cv_input_rgb.rows)),
rerun::ColorModel::RGB));
.gorgeous-terabyte-27715
07/31/2025, 8:29 AM2025-07-31T08:16:52.893796772Z ERROR re_grpc_server: Error reading message from broadcast channel: channel lagged by 281974
blue-application-26880
07/29/2025, 6:34 PMre_renderer
directly within a custom egui
application (using wgpu
).
With nothing queued in ViewBuilder
I get nothing and see the background as expected.
When I queue_draw
a GenericSkyboxDrawData
, I get a fully black viewport. Behavior of other renderers varies, but I never get any meaningful output.
I captured a frame in RenderDoc to try to get more insight into what might be happening. The black screen seems to stem from the color value in the shader `nan`ing. Tracing it back in the debugger it seems to originate from the re_renderer
frame uniform buffer
which is bound to descriptor set 0 being filled with nulls only.
According to RenderDoc the buffer is only `clear`ed and barriered before it is used in the shaders for the re_renderer
renderers.
I imagine I am probably missing some important step in my code, does someone know what I might be doing wrong?bulky-mouse-15596
07/29/2025, 3:58 PMrec.log("video_stream",rerun::archetypes::VideoStream{}.with_sample(rerun::components::VideoSample{data}));
I had a first error similar to the one mentioned here:
https://discord.com/channels/1062300748202921994/1397335975364919392
I applied the uint32_t
fix and the next error was the ffmpeg version. Got the recommended version and the video stream doesn't get displayed:
Failed to decode video: FFmpeg error: [h264] [error] error while decoding MB 2 64, bytestream 16292
It gets the Dimensions of the video stream right (1920x1080) and the sent data chunks appear in the Video samples table but no video gets displayed.
The video stream is created from that command:
ffmpeg -f rawvideo -pixel_format rgba -video_size {width}x{height} -framerate {frameRate} -i - -vf vflip -c:v libx264 -preset veryfast -tune zerolatency -f mpegts udp://localhost:1234?pkt_size=1316
and it is displayed correctly with ffplay
.quiet-restaurant-13188
07/29/2025, 12:09 PMquiet-restaurant-13188
07/29/2025, 12:02 PMlate-finland-49345
07/26/2025, 4:21 AMechoing-translator-29651
07/22/2025, 11:42 PMcreamy-airplane-43852
07/22/2025, 9:54 PMre_viewer_context::component_ui_registry] Failed to deserialize component of type rerun.components.VideoCodec: Failed to deserialize "rerun.components.VideoCodec"
I've put the RUST_LOG up to debug on both the sender and the receiver but it gives me no other information other than the deserialization error.
Any idea what I might be doing wrong?
I've attached the code I'm working with. This also dumps the h264 data to a file which does reproduce correctly when using ffplay so I don't think this is an encoding error
https://cdn.discordapp.com/attachments/1397335975364919392/1397335975645941882/on-the-fly.cpp?ex=688b3d49&is=6889ebc9&hm=f06d6a86384a371ebdcb0a5c7b02a7556716b8bace7b699e20bee65ea0ef7161&victorious-crayon-58185
07/22/2025, 11:59 AMechoing-translator-29651
07/22/2025, 12:14 AMsalmon-solstice-47676
07/19/2025, 9:02 PMRenderer
using the re_renderer
crate and the shader I want to use requires some `texture2d`s. From looking through the Rerun code I can see examples like:
ctx.gpu_resources.bind_groups.alloc(
&ctx.device,
&ctx.gpu_resources,
&BindGroupDesc {
label,
entries: smallvec![
BindGroupEntry::DefaultTextureView(position_data_texture.handle),
BindGroupEntry::DefaultTextureView(color_texture.handle),
BindGroupEntry::DefaultTextureView(picking_instance_id_texture.handle),
draw_data_uniform_buffer_binding,
],
layout: point_renderer.bind_group_layout_all_points,
},
)
however, BindGroupEntry
is private. For the variant BindGroupEntry::Buffer
there is create_and_fill_uniform_buffer
, but I can't find anything that lets me pass my own texture handles to shaders. Am I missing something?shy-optician-6807
07/19/2025, 2:10 PMashpd
fails to compile. Here's a part of the errors from cargo build
. Does anybody know how to solve this? I use rust 1.88 on Linux.
error[E0432]: unresolved import `futures_util::AsyncReadExt`
--> /home/xyz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.10.2/src/desktop/secret.rs:26:5
|
26 | use futures_util::AsyncReadExt;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `AsyncReadExt` in the root
|
note: found an item that was configured out
--> /home/xyz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lib.rs:320:47
|
320 | AsyncBufRead, AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncSeek, AsyncSeekExt, AsyncWrite,
| ^^^^^^^^^^^^
note: the item is gated behind the `io` feature
--> /home/xyz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lib.rs:316:7
|
316 | #[cfg(feature = "io")]
| ^^^^^^^^^^^^^^
error[E0432]: unresolved import `futures_util::AsyncReadExt`
--> /home/xyz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ashpd-0.10.2/src/helpers.rs:4:5
|
4 | use futures_util::AsyncReadExt;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `AsyncReadExt` in the root
|
note: found an item that was configured out
--> /home/xyz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lib.rs:320:47
|
320 | AsyncBufRead, AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncSeek, AsyncSeekExt, AsyncWrite,
| ^^^^^^^^^^^^
...
NOTE: I saw [this](https://users.rust-lang.org/t/issue-with-futures-lite-dependency-resolution-in-ashpd-read-to-string-read-to-end-errors/125669/1) already, but it didn't apply to mehappy-tailor-42627
07/18/2025, 3:58 PMdry-crowd-37372
07/11/2025, 6:59 PMbest-postman-58155
07/11/2025, 6:32 PMRecordingStream
set to log to the blueprint directly
- using RecordingStream::send_blueprint
Unfortunately, all of these require the StoreId
of the active blueprint and I can't seem to find a way to get it. The closest seems to be StoreHub::active_blueprint_id
, but I don't see anyway to access that.
Any suggestions here for how I can get that? Or another route I could take? Thanks!acoustic-country-63831
07/11/2025, 8:56 AM.set_time_seconds
and .log
for attached demo.
- I'd like to show input points only at first frame, then only facets, then only valid facets (but maybe another need would be to persist some data multiple frames)
https://cdn.discordapp.com/attachments/1393153897325002814/1393153897517809706/parry_step_debugging.mp4?ex=6872232c&is=6870d1ac&hm=aa1692e9fa99b41628eef4de6cc50ed6cc2852c3d76467211b9f0a3643038e48&cool-artist-76654
07/10/2025, 12:23 PMgray-elephant-10429
07/08/2025, 9:19 AMPoint3D
archetypecareful-apple-44581
07/07/2025, 2:16 PMrr.log
according to the respective type. It works fine on the direct host machine with the native GUI but has a lag when I use the web_viewer mode with grpc
.
My team prefers to run everything from inside dockers (combined with another ROS2 functionality) and I am having a hard time figuring it out. I don't want to use web_viewer since that brings in ~3 seconds lag on the visualization. Is there any way to run the native viewer through the docker?loud-airplane-74345
07/01/2025, 4:09 PM