Skip to content

std lib unit test regression: integer overflow in std.Io.Writer.Allocating.sendFile #24754

@andrewrk

Description

@andrewrk
test-std
└─ run test std-x86_64-linux-none-x86_64-Debug-llvm failure
thread 1778419 panic: integer overflow
/home/andy/dev/zig/lib/std/Io/Writer.zig:2638:67: 0x1d08350 in sendFile (test)
        const additional = if (file_reader.getSize()) |size| size - pos else |_| std.atomic.cache_line;
                                                                  ^
/home/andy/dev/zig/lib/std/Io/Writer.zig:895:29: 0x1606901 in sendFile (test)
    return w.vtable.sendFile(w, file_reader, limit);
                            ^
/home/andy/dev/zig/lib/std/fs/File.zig:1285:57: 0x160182b in stream (test)
            .positional, .streaming => return w.sendFile(r, limit) catch |write_err| switch (write_err) {
                                                        ^
/home/andy/dev/zig/lib/std/Io/Reader.zig:178:34: 0x15658e8 in stream (test)
    const n = try r.vtable.stream(r, w, limit);
                                 ^
/home/andy/dev/zig/lib/std/http.zig:516:39: 0x22cc144 in contentLengthStream (test)
        const n = try reader.in.stream(w, limit.min(.limited64(remaining)));
                                      ^
/home/andy/dev/zig/lib/std/Io/Reader.zig:178:34: 0x15658e8 in stream (test)
    const n = try r.vtable.stream(r, w, limit);
                                 ^
/home/andy/dev/zig/lib/std/Io/Reader.zig:257:27: 0x1c96c6c in streamRemaining (test)
        offset += r.stream(w, .unlimited) catch |err| switch (err) {
                          ^
/home/andy/dev/zig/lib/std/http/Client.zig:1803:31: 0x23fe649 in fetch (test)
    _ = reader.streamRemaining(response_writer) catch |err| switch (err) {
                              ^
/home/andy/dev/zig/lib/std/http/test.zig:1013:37: 0x23fc33c in echoTests (test)
        const res = try client.fetch(.{
                                    ^
/home/andy/dev/zig/lib/std/http/test.zig:242:22: 0x23ff14e in test.echo content server (test)
        try echoTests(&client, test_server.port());
                     ^
/home/andy/dev/zig/lib/compiler/test_runner.zig:130:29: 0x15f8a37 in mainServer (test)
                test_fn.func() catch |err| switch (err) {
                            ^
/home/andy/dev/zig/lib/compiler/test_runner.zig:64:26: 0x15f5b49 in main (test)
        return mainServer() catch @panic("internal test runner failure");
                         ^
/home/andy/dev/zig/lib/std/start.zig:618:22: 0x15f4fd4 in posixCallMainAndExit (test)
            root.main();
                     ^
/home/andy/dev/zig/lib/std/start.zig:232:5: 0x15f4bad in _start (test)
    asm volatile (switch (native_arch) {
    ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugObserved behavior contradicts documented or intended behaviorregressionIt worked in a previous version of Zig, but stopped working.standard libraryThis issue involves writing Zig code for the standard library.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions