@@ -129,7 +129,11 @@ fn test_crash_tracking_bin_prechain_sigabrt() {
129
129
test_crash_tracking_bin ( BuildProfile :: Release , "prechain_abort" , "null_deref" ) ;
130
130
}
131
131
132
+ // This test is disabled for now on x86_64 musl.
133
+ // It seems that on aarch64 musl, libc has CFI which allows
134
+ // unwinding passed the signal frame.
132
135
#[ test]
136
+ #[ cfg( not( all( target_arch = "x86_64" , target_env = "musl" ) ) ) ]
133
137
#[ cfg_attr( miri, ignore) ]
134
138
fn test_crasht_tracking_validate_callstack ( ) {
135
139
test_crash_tracking_callstack ( )
@@ -190,14 +194,18 @@ fn test_crash_tracking_callstack() {
190
194
191
195
// Note: in Release, we do not have the crate and module name prepended to the function name
192
196
// Here we compile the crashing app in Debug.
193
- let expected_functions: Vec < & str > = [
194
- "crashing_test_app::unix::fn3" ,
197
+ let mut expected_functions = vec ! [
195
198
"crashing_test_app::unix::fn2" ,
196
199
"crashing_test_app::unix::fn1" ,
197
200
"crashing_test_app::unix::main" ,
198
201
"crashing_test_app::main" ,
199
- ]
200
- . to_vec ( ) ;
202
+ ] ;
203
+ // It seems that on arm/arm64, fn3 is inlined in fn2, so not present.
204
+ // Add fn3 only for x86_64 arch
205
+ #[ cfg( target_arch = "x86_64" ) ]
206
+ {
207
+ expected_functions. insert ( 0 , "crashing_test_app::unix::fn3" ) ;
208
+ }
201
209
202
210
let crashing_callstack = & crash_payload[ "error" ] [ "stack" ] [ "frames" ] ;
203
211
assert ! (
0 commit comments