| ... | @@ -56,13 +56,15 @@ pub const FailingAllocator = struct { | ... | @@ -56,13 +56,15 @@ pub const FailingAllocator = struct { |
| 56 | return_address: usize, | 56 | return_address: usize, |
| 57 | ) error{OutOfMemory}![]u8 { | 57 | ) error{OutOfMemory}![]u8 { |
| 58 | if (self.index == self.fail_index) { | 58 | if (self.index == self.fail_index) { |
| 59 | mem.set(usize, &self.stack_addresses, 0); | 59 | if (!self.has_induced_failure) { |
| 60 | var stack_trace = std.builtin.StackTrace{ | 60 | mem.set(usize, &self.stack_addresses, 0); |
| 61 | .instruction_addresses = &self.stack_addresses, | 61 | var stack_trace = std.builtin.StackTrace{ |
| 62 | .index = 0, | 62 | .instruction_addresses = &self.stack_addresses, |
| 63 | }; | 63 | .index = 0, |
| 64 | std.debug.captureStackTrace(return_address, &stack_trace); | 64 | }; |
| 65 | self.has_induced_failure = true; | 65 | std.debug.captureStackTrace(return_address, &stack_trace); |
| | 66 | self.has_induced_failure = true; |
| | 67 | } |
| 66 | return error.OutOfMemory; | 68 | return error.OutOfMemory; |
| 67 | } | 69 | } |
| 68 | const result = try self.internal_allocator.rawAlloc(len, ptr_align, len_align, return_address); | 70 | const result = try self.internal_allocator.rawAlloc(len, ptr_align, len_align, return_address); |