{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreieqq5lxtdnxvje47doufstqy54ugro7xndvb4il52wiuznl7g44ra",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mlrmac7ljkt2"
  },
  "path": "/t/signal-semantics-for-rust/24288#post_5",
  "publishedAt": "2026-05-14T00:13:21.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "Unwinding runs destructors which can run arbitrary code. I'm not sure if low-level unwinding could work even if you didn't have any destructors - probably still wouldn't be guaranteed by the language because there's always a chance that it will need some incompatible OS API or lazily load and allocate unwind tables.\n\nPanicking is totally incompatible with signal handlers, since it runs arbitrary code of panic handlers and `malloc`s `PanicHookInfo`.",
  "title": "Signal semantics for Rust"
}