diff options
author | 2021-12-24 20:44:25 -0800 | |
---|---|---|
committer | 2021-12-24 20:44:25 -0800 | |
commit | 143973e0311a1102ff2145ba32d5dc72a0a8cb28 (patch) | |
tree | b7faa284e501c58b706dab6ffc3cabf98dec85bf /src/global.zig | |
parent | bb5ad6e1adfd4f59044068a153c9d2b42448dfcc (diff) | |
download | bun-143973e0311a1102ff2145ba32d5dc72a0a8cb28.tar.gz bun-143973e0311a1102ff2145ba32d5dc72a0a8cb28.tar.zst bun-143973e0311a1102ff2145ba32d5dc72a0a8cb28.zip |
Fix rare crash when new thread is created, possibly only on musl
Diffstat (limited to 'src/global.zig')
-rw-r--r-- | src/global.zig | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/global.zig b/src/global.zig index 08cc77fab..536b55be7 100644 --- a/src/global.zig +++ b/src/global.zig @@ -80,6 +80,19 @@ pub const Output = struct { source = Source.init(stdout_stream, stderr_stream); } + pub fn configureNamedThread(thread: std.Thread, name: stringZ) void { + if (source_set) return; + configureThread(); + + // On Linux, thread may be undefined + // Fortunately, we can use a different syscall that only affects the current thread + if (Environment.isLinux) { + _ = std.os.linux.prctl(std.os.PR_SET_NAME, @ptrToInt(name.ptr), 0, 0, 0); + } else { + thread.setName(name) catch {}; + } + } + pub fn set(_source: *Source) void { source = _source.*; source_set = true; |