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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions