| ... | @@ -392,19 +392,8 @@ pub const File = struct { | ... | @@ -392,19 +392,8 @@ pub const File = struct { |
| 392 | .linux => std.os.ptrace(std.os.linux.PTRACE.ATTACH, pid, 0, 0) catch |err| { | 392 | .linux => std.os.ptrace(std.os.linux.PTRACE.ATTACH, pid, 0, 0) catch |err| { |
| 393 | log.warn("ptrace failure: {s}", .{@errorName(err)}); | 393 | log.warn("ptrace failure: {s}", .{@errorName(err)}); |
| 394 | }, | 394 | }, |
| 395 | .macos => { | 395 | .macos => base.cast(MachO).?.ptraceAttach(pid) catch |err| { |
| 396 | const macho = base.cast(MachO).?; | 396 | log.warn("attaching failed with error: {s}", .{@errorName(err)}); |
| 397 | if (macho.mach_task == null) { | | |
| 398 | if (std.os.darwin.machTaskForPid(pid)) |task| { | | |
| 399 | macho.mach_task = task; | | |
| 400 | // TODO enable ones we register for exceptions | | |
| 401 | // std.os.ptrace(std.os.darwin.PT.ATTACHEXC, pid, 0, 0) catch |err| { | | |
| 402 | // log.warn("ptrace failure: {s}", .{@errorName(err)}); | | |
| 403 | // }; | | |
| 404 | } else |err| { | | |
| 405 | log.warn("failed to acquire Mach task for child process: {s}", .{@errorName(err)}); | | |
| 406 | } | | |
| 407 | } | | |
| 408 | }, | 397 | }, |
| 409 | else => return error.HotSwapUnavailableOnHostOperatingSystem, | 398 | else => return error.HotSwapUnavailableOnHostOperatingSystem, |
| 410 | } | 399 | } |
| ... | @@ -444,11 +433,9 @@ pub const File = struct { | ... | @@ -444,11 +433,9 @@ pub const File = struct { |
| 444 | .linux => std.os.ptrace(std.os.linux.PTRACE.DETACH, pid, 0, 0) catch |err| { | 433 | .linux => std.os.ptrace(std.os.linux.PTRACE.DETACH, pid, 0, 0) catch |err| { |
| 445 | log.warn("ptrace failure: {s}", .{@errorName(err)}); | 434 | log.warn("ptrace failure: {s}", .{@errorName(err)}); |
| 446 | }, | 435 | }, |
| 447 | .macos => {}, | 436 | .macos => base.cast(MachO).?.ptraceDetach(pid) catch |err| { |
| 448 | // TODO see comment above in makeWritable | 437 | log.warn("detaching failed with error: {s}", .{@errorName(err)}); |
| 449 | // .macos => std.os.ptrace(std.os.darwin.PT.DETACH, pid, 0, 0) catch |err| { | 438 | }, |
| 450 | // log.warn("ptrace failure: {s}", .{@errorName(err)}); | | |
| 451 | // }, | | |
| 452 | else => return error.HotSwapUnavailableOnHostOperatingSystem, | 439 | else => return error.HotSwapUnavailableOnHostOperatingSystem, |
| 453 | } | 440 | } |
| 454 | } | 441 | } |