ikskuh / zig-network

A smallest-common-subset of socket functions for crossplatform networking, TCP & UDP
MIT License
484 stars 59 forks source link

Windows error: cast increases pointer alignment #70

Closed jan-matthis closed 1 year ago

jan-matthis commented 1 year ago

I am running into a "cast increases pointer alignment" error on windows that I am unsure how to fix.

A minimal example:

const std = @import("std");
const network = @import("network");

pub fn main() !void {
    try network.init();
    defer network.deinit();

    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const allocator = gpa.allocator();

    var socket = try network.Socket.create(.ipv4, .udp);
    defer socket.close();
    try socket.bind(.{
        .address = .{ .ipv4 = network.Address.IPv4.any },
        .port = 2501,
    });

    var socketset = try network.SocketSet.init(allocator);
    defer socketset.deinit();
    var event = network.SocketEvent{ .read = true, .write = false };
    try socketset.add(socket, event);

    const wait_msg = network.waitForSocketEvent(&socketset, 0) catch 0;
    _ = wait_msg;
}
C:\Users\UserName\AppData\Local\zig\p\122090e7cb4459c2224399a45c56f47462733b919aa547c96b8c14ee705bfa22976e\network.zig:817:28: error: cast increases pointer alignment
                fd_set.* = @ptrCast((try allocator.reallocAdvanced(ptr, new_mem_size, @returnAddress())).ptr);
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\UserName\AppData\Local\zig\p\122090e7cb4459c2224399a45c56f47462733b919aa547c96b8c14ee705bfa22976e\network.zig:817:105: note: '[*]u8' has alignment '1'  
                fd_set.* = @ptrCast((try allocator.reallocAdvanced(ptr, new_mem_size, @returnAddress())).ptr);
                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
C:\Users\UserName\AppData\Local\zig\p\122090e7cb4459c2224399a45c56f47462733b919aa547c96b8c14ee705bfa22976e\network.zig:817:28: note: '*align(8) network.WindowsOSLogic.FdSet' has alignment '8'
C:\Users\UserName\AppData\Local\zig\p\122090e7cb4459c2224399a45c56f47462733b919aa547c96b8c14ee705bfa22976e\network.zig:817:28: note: use @alignCast to assert pointer alignment
referenced by:
    getFdSet: C:\Users\UserName\AppData\Local\zig\p\122090e7cb4459c2224399a45c56f47462733b919aa547c96b8c14ee705bfa22976e\network.zig:924:26
    waitForSocketEvent: C:\Users\UserName\AppData\Local\zig\p\122090e7cb4459c2224399a45c56f47462733b919aa547c96b8c14ee705bfa22976e\network.zig:973:46
    remaining reference traces hidden; use '-freference-trace' to see all reference traces

Using the latest version of zig-network (7b5f76ea09626b96755c027bf4bd5b7e45297027) with zig 0.11.0-dev.4315+f5239677e on Windows 10 Pro, 64 bit. https://github.com/MasterQ32/zig-network/issues/62 might be related.

Weldify commented 1 year ago

Also experiencing this!

Weldify commented 1 year ago

@jan-matthis Should be fixed now