deno.land / x / deno@v1.28.2 / core / examples / panik.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.//! This example shows that op-panics currently result in UB (likely "failed to initiate panic")//! without a custom panic hook that aborts the process or -C panic=abort.//!//! This happens due to the UB of panicking in an extern "C",//! given how ops are reduced via rusty_v8::MapFnTo//! See://! - https://github.com/rust-lang/rust/issues/74990//! - https://rust-lang.github.io/rfcs/2945-c-unwind-abi.html
use deno_core::op;use deno_core::Extension;use deno_core::JsRuntime;use deno_core::RuntimeOptions;
// This is a hack to make the `#[op]` macro work with// deno_core examples.// You can remove this:use deno_core::*;
fn main() { #[op] fn op_panik() { panic!("panik !!!") }
let extensions = vec![Extension::builder().ops(vec![op_panik::decl()]).build()]; let mut rt = JsRuntime::new(RuntimeOptions { extensions, ..Default::default() }); rt.execute_script("panik", "Deno.core.ops.op_panik()") .unwrap();}
deno

Version Info

Tagged at
a year ago