@@ -9,6 +9,7 @@ use serde::Serialize;
9
9
use crate :: api:: GoApi ;
10
10
use crate :: args:: { CACHE_ARG , CHECKSUM_ARG , CONFIG_ARG , WASM_ARG } ;
11
11
use crate :: error:: { handle_c_error_binary, handle_c_error_default, handle_c_error_ptr, Error } ;
12
+ use crate :: handle_vm_panic:: handle_vm_panic;
12
13
use crate :: memory:: { ByteSliceView , UnmanagedVector } ;
13
14
use crate :: querier:: GoQuerier ;
14
15
use crate :: storage:: GoStorage ;
@@ -32,6 +33,7 @@ pub extern "C" fn init_cache(
32
33
) -> * mut cache_t {
33
34
let r = catch_unwind ( || do_init_cache ( config) ) . unwrap_or_else ( |err| {
34
35
eprintln ! ( "Panic in do_init_cache: {err:?}" ) ;
36
+ handle_vm_panic ( ) ;
35
37
Err ( Error :: panic ( ) )
36
38
} ) ;
37
39
handle_c_error_ptr ( r, error_msg) as * mut cache_t
@@ -57,6 +59,7 @@ pub extern "C" fn save_wasm(
57
59
Some ( c) => catch_unwind ( AssertUnwindSafe ( move || do_save_wasm ( c, wasm, unchecked) ) )
58
60
. unwrap_or_else ( |err| {
59
61
eprintln ! ( "Panic in do_save_wasm: {err:?}" ) ;
62
+ handle_vm_panic ( ) ;
60
63
Err ( Error :: panic ( ) )
61
64
} ) ,
62
65
None => Err ( Error :: unset_arg ( CACHE_ARG ) ) ,
@@ -89,6 +92,7 @@ pub extern "C" fn remove_wasm(
89
92
Some ( c) => catch_unwind ( AssertUnwindSafe ( move || do_remove_wasm ( c, checksum) ) )
90
93
. unwrap_or_else ( |err| {
91
94
eprintln ! ( "Panic in do_remove_wasm: {err:?}" ) ;
95
+ handle_vm_panic ( ) ;
92
96
Err ( Error :: panic ( ) )
93
97
} ) ,
94
98
None => Err ( Error :: unset_arg ( CACHE_ARG ) ) ,
@@ -118,6 +122,7 @@ pub extern "C" fn load_wasm(
118
122
Some ( c) => catch_unwind ( AssertUnwindSafe ( move || do_load_wasm ( c, checksum) ) )
119
123
. unwrap_or_else ( |err| {
120
124
eprintln ! ( "Panic in do_load_wasm: {err:?}" ) ;
125
+ handle_vm_panic ( ) ;
121
126
Err ( Error :: panic ( ) )
122
127
} ) ,
123
128
None => Err ( Error :: unset_arg ( CACHE_ARG ) ) ,
@@ -148,6 +153,7 @@ pub extern "C" fn pin(
148
153
Some ( c) => {
149
154
catch_unwind ( AssertUnwindSafe ( move || do_pin ( c, checksum) ) ) . unwrap_or_else ( |err| {
150
155
eprintln ! ( "Panic in do_pin: {err:?}" ) ;
156
+ handle_vm_panic ( ) ;
151
157
Err ( Error :: panic ( ) )
152
158
} )
153
159
}
@@ -178,6 +184,7 @@ pub extern "C" fn unpin(
178
184
Some ( c) => {
179
185
catch_unwind ( AssertUnwindSafe ( move || do_unpin ( c, checksum) ) ) . unwrap_or_else ( |err| {
180
186
eprintln ! ( "Panic in do_unpin: {err:?}" ) ;
187
+ handle_vm_panic ( ) ;
181
188
Err ( Error :: panic ( ) )
182
189
} )
183
190
}
@@ -286,6 +293,7 @@ pub extern "C" fn analyze_code(
286
293
Some ( c) => catch_unwind ( AssertUnwindSafe ( move || do_analyze_code ( c, checksum) ) )
287
294
. unwrap_or_else ( |err| {
288
295
eprintln ! ( "Panic in do_analyze_code: {err:?}" ) ;
296
+ handle_vm_panic ( ) ;
289
297
Err ( Error :: panic ( ) )
290
298
} ) ,
291
299
None => Err ( Error :: unset_arg ( CACHE_ARG ) ) ,
@@ -364,6 +372,7 @@ pub extern "C" fn get_metrics(
364
372
Some ( c) => {
365
373
catch_unwind ( AssertUnwindSafe ( move || do_get_metrics ( c) ) ) . unwrap_or_else ( |err| {
366
374
eprintln ! ( "Panic in do_get_metrics: {err:?}" ) ;
375
+ handle_vm_panic ( ) ;
367
376
Err ( Error :: panic ( ) )
368
377
} )
369
378
}
@@ -419,6 +428,7 @@ pub extern "C" fn get_pinned_metrics(
419
428
Some ( c) => {
420
429
catch_unwind ( AssertUnwindSafe ( move || do_get_pinned_metrics ( c) ) ) . unwrap_or_else ( |err| {
421
430
eprintln ! ( "Panic in do_get_pinned_metrics: {err:?}" ) ;
431
+ handle_vm_panic ( ) ;
422
432
Err ( Error :: panic ( ) )
423
433
} )
424
434
}
0 commit comments