Get the latest tech news

Rust: Investigating an Out of Memory Error


We discovered the hard way that when backtrace is enabled, the anyhow library is capturing a backtrace on every error. Only when printing this error in debug format!(”err: {:?}”, error) backtrace’s symbols are resolved to human-friendly names, thus leading to a significant memory increase for your application.

This service runs on Kubernetes, so we checked the pod's status and found out the last reason for the restart was an out-of-memory (OOM), meaning that the application used more memory than the limit we set. We control both ends of the service, so we don’t expect any big payload that would cause such an abrupt spike, and clients are able to resume even after an error. Your monitoring can lie to you if events happen in between its sampling frequency The documentation you don’t understand is going to bite you in the future Surprisingly, anyhow/eyre library is leaning by default to capture a backtrace on every error when not explicitly disabled

Get the Android app

Or read this on Hacker News

Read more on:

Photo of Rust

Rust

Photo of memory error

memory error

Related news:

News photo

KEON is a human-readable serde format that syntactic similar to Rust

News photo

Ropey – A UTF8 text rope for manipulating and editing large text

News photo

Build a Database in Four Months with Rust and 647 Open-Source Dependencies