Merge branch 'master' into zig-0.15.0
This commit is contained in:
commit
b258b2bb54
4 changed files with 1766 additions and 3 deletions
|
@ -15,8 +15,8 @@
|
|||
.hash = "dizzy-1.0.0-AAAAAM1wAAAiDbx_6RwcVEOBk8p2XOu8t9WPNc3K7kBK",
|
||||
},
|
||||
.thespian = .{
|
||||
.url = "https://github.com/neurocyte/thespian/archive/a7b2354ad2fbe9d2b3629a455f2e823b463c18eb.tar.gz",
|
||||
.hash = "thespian-0.0.1-owFOjosTBgAgvY4TcT_xI30QsbU8cE_tAUu_HoxoTjMV",
|
||||
.url = "https://github.com/neurocyte/thespian/archive/829a8d33e92988a51a8c51d204ec766a28c7903d.tar.gz",
|
||||
.hash = "thespian-0.0.1-owFOjs0TBgAAed7EtHDPtpB7NBn-riNjb7Rkc7a_Voow",
|
||||
},
|
||||
.themes = .{
|
||||
.url = "https://github.com/neurocyte/flow-themes/releases/download/master-952f9f630ea9544088fd30293666ee0650b7a690/flow-themes.tar.gz",
|
||||
|
|
|
@ -149,7 +149,10 @@ pub fn main() anyerror!void {
|
|||
}
|
||||
|
||||
if (builtin.os.tag != .windows)
|
||||
if (std.posix.getenv("JITDEBUG")) |_| thespian.install_debugger();
|
||||
if (std.posix.getenv("JITDEBUG")) |_|
|
||||
thespian.install_debugger()
|
||||
else if (@hasDecl(renderer, "install_crash_handler"))
|
||||
renderer.install_crash_handler();
|
||||
|
||||
if (args.debug_wait) {
|
||||
std.debug.print("press return to start", .{});
|
||||
|
|
|
@ -118,6 +118,34 @@ pub fn panic_in_progress() bool {
|
|||
return in_panic.load(.acquire);
|
||||
}
|
||||
|
||||
pub fn install_crash_handler() void {
|
||||
if (!std.debug.have_segfault_handling_support) {
|
||||
@compileError("segfault handler not supported for this target");
|
||||
}
|
||||
const act = std.posix.Sigaction{
|
||||
.handler = .{ .sigaction = handle_crash },
|
||||
.mask = std.posix.empty_sigset,
|
||||
.flags = (std.posix.SA.SIGINFO | std.posix.SA.RESTART),
|
||||
};
|
||||
|
||||
std.posix.sigaction(std.posix.SIG.BUS, &act, null);
|
||||
std.posix.sigaction(std.posix.SIG.SEGV, &act, null);
|
||||
std.posix.sigaction(std.posix.SIG.ABRT, &act, null);
|
||||
std.posix.sigaction(std.posix.SIG.FPE, &act, null);
|
||||
std.posix.sigaction(std.posix.SIG.ILL, &act, null);
|
||||
}
|
||||
|
||||
fn handle_crash(sig: i32, info: *const std.posix.siginfo_t, ctx_ptr: ?*anyopaque) callconv(.c) noreturn {
|
||||
in_panic.store(true, .release);
|
||||
const cleanup = panic_cleanup;
|
||||
panic_cleanup = null;
|
||||
if (cleanup) |self| {
|
||||
self.vx.deinit(self.allocator, self.tty.anyWriter());
|
||||
self.tty.deinit();
|
||||
}
|
||||
@import("std/debug.zig").handleSegfaultPosix(sig, info, ctx_ptr);
|
||||
}
|
||||
|
||||
pub fn run(self: *Self) Error!void {
|
||||
self.vx.sgr = .legacy;
|
||||
self.vx.conpty_hacks = true;
|
||||
|
|
1732
src/renderer/vaxis/std/debug.zig
Normal file
1732
src/renderer/vaxis/std/debug.zig
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue