I believe it is a real crash and it is revealed by the native backend initializing MultiArrayList.bytes to 0xaaaaaaaaaaaaaaaa instead of 0.
The fix is:
# src/pool.zig
fn updateSlices(self: *Self) void {
var slice = self._storage.slice();
const free_queue_storage = slice.items(.@"Pool._free_queue");
self._free_queue.resize(free_queue_storage);
self._curr_cycle = slice.items(.@"Pool._curr_cycle");
inline for (column_fields, 0..) |column_field, i| {
const F = column_field.type;
const p = slice.ptrs[private_fields.len + i];
- const f = @as([*]F, @ptrCast(@alignCast(p)));
- @field(self.columns, column_field.name) = f[0..slice.len];
+ if (slice.len == 0) {
+ @field(self.columns, column_field.name) = &.{};
+ } else {
+ const f = @as([*]F, @ptrCast(@alignCast(p)));
+ @field(self.columns, column_field.name) = f[0..slice.len];
+ }
}
}
Stacktrace:
thread 4516 panic: incorrect alignment
.zig-cache/p/zpool-0.11.0-dev-bG692QtEAQCyqBnzSBJbJlY0-a_3v1YcjFTGmg0VBjOc/src/pool.zig:543:37: 0x106f8f0 in updateSlices (main.zig)
const f = @as([*]F, @ptrCast(@alignCast(p)));
^
.zig-cache/p/zpool-0.11.0-dev-bG692QtEAQCyqBnzSBJbJlY0-a_3v1YcjFTGmg0VBjOc/src/pool.zig:135:25: 0x104efa7 in init (main.zig)
updateSlices(&self);
^
src/main.zig:330:29: 0x104885b in init (main.zig)
.players = .init(gpa),
^
I believe it is a real crash and it is revealed by the native backend initializing MultiArrayList.bytes to 0xaaaaaaaaaaaaaaaa instead of 0.
The fix is:
Stacktrace: