Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error building demo #14

Closed
kamidev opened this issue May 16, 2023 · 13 comments
Closed

Error building demo #14

kamidev opened this issue May 16, 2023 · 13 comments
Labels
deferred-to-zig-bug issue is caused by a bug in zig

Comments

@kamidev
Copy link

kamidev commented May 16, 2023

I am trying to build on an M2 Max.

➜  zap git:(master) zig version; sw_vers; clang --version
0.11.0-dev.3177+e584dd806
ProductName:		macOS
ProductVersion:		13.3.1
ProductVersionExtra:	(a)
BuildVersion:		22E772610a
Homebrew clang version 16.0.3
Target: arm64-apple-darwin22.4.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm/bin
➜  zap git:(master) git log -1 | tee
commit 6e3c9805164acfe7be57f687712ab87e49314e8d
Author: Rene Schallner <30892199+renerocksai@users.noreply.github.com>
Date:   Tue May 16 04:47:08 2023 +0200

    Update README.md
@kamidev
Copy link
Author

kamidev commented May 16, 2023

➜  zap git:(master) zig build run-hello
thread 824141 panic: @memcpy arguments have non-equal lengths
/Users/jonas/src/zig/zig/lib/std/crypto/tls/Client.zig:1062:25: 0x1032934ef in readvAdvanced__anon_149392 (zig)
            @memcpy(frag[0..in], first);
                        ^
/Users/jonas/src/zig/zig/lib/std/crypto/tls/Client.zig:898:38: 0x1032914a3 in readvAtLeast__anon_149391 (zig)
        var amt = try c.readvAdvanced(stream, iovecs[vec_i..]);
                                     ^
/Users/jonas/src/zig/zig/lib/std/crypto/tls/Client.zig:859:24: 0x103291287 in readAtLeast__anon_149390 (zig)
    return readvAtLeast(c, stream, &iovecs, len);
                       ^
/Users/jonas/src/zig/zig/lib/std/crypto/tls/Client.zig:864:23: 0x1032911a7 in read__anon_149389 (zig)
    return readAtLeast(c, stream, buffer, 1);
                      ^
/Users/jonas/src/zig/zig/lib/std/http/Client.zig:173:41: 0x102d9ce77 in read (zig)
            .tls => conn.tls_client.read(conn.stream, buffer),
                                        ^
/Users/jonas/src/zig/zig/lib/std/http/Client.zig:267:42: 0x102af5be3 in fill (zig)
        const nread = try bconn.conn.read(bconn.read_buf[0..]);
                                         ^
/Users/jonas/src/zig/zig/lib/std/http/Client.zig:302:27: 0x102d9d75b in readAtLeast (zig)
            try bconn.fill();
                          ^
/Users/jonas/src/zig/zig/lib/std/http/Client.zig:309:33: 0x102af5f37 in read (zig)
        return bconn.readAtLeast(buffer, 1);
                                ^
/Users/jonas/src/zig/zig/lib/std/http/protocol.zig:586:53: 0x102af5517 in read__anon_105152 (zig)
                        const nread = try bconn.read(buffer[out_index..][0..can_read]);
                                                    ^
/Users/jonas/src/zig/zig/lib/std/http/Client.zig:682:53: 0x102af6c47 in transferRead (zig)
            const amt = try req.response.parser.read(&req.connection.data.buffered, buf[index..], req.response.skip);
                                                    ^
/Users/jonas/src/zig/zig/lib/std/http/Client.zig:812:41: 0x102afdeef in read (zig)
            else => try req.transferRead(buffer),
                                        ^
/Users/jonas/src/zig/zig/lib/std/io/reader.zig:27:26: 0x102aff583 in read (zig)
            return readFn(self.context, buffer);
                         ^
/Users/jonas/src/zig/zig/lib/std/io/buffered_reader.zig:27:62: 0x102aff30b in read (zig)
                    const n = try self.unbuffered_reader.read(self.buf[0..]);
                                                             ^
/Users/jonas/src/zig/zig/lib/std/io/reader.zig:27:26: 0x102aff773 in read (zig)
            return readFn(self.context, buffer);
                         ^
/Users/jonas/src/zig/zig/lib/std/io/reader.zig:243:43: 0x102db3d07 in readByte (zig)
            const amt_read = try self.read(result[0..]);
                                          ^
/Users/jonas/src/zig/zig/lib/std/compress/deflate/decompressor.zig:848:55: 0x102db45b3 in huffSym (zig)
                    var c = self.inner_reader.readByte() catch |e| {
                                                      ^
/Users/jonas/src/zig/zig/lib/std/compress/deflate/decompressor.zig:621:49: 0x102b01a7b in huffmanBlock (zig)
                        var v = try self.huffSym(self.hl.?);
                                                ^
/Users/jonas/src/zig/zig/lib/std/compress/deflate/decompressor.zig:471:26: 0x102b05073 in read (zig)
                self.step(self) catch |e| {
                         ^
/Users/jonas/src/zig/zig/lib/std/compress/gzip.zig:128:45: 0x102b047af in read (zig)
            const r = try self.inflater.read(buffer);
                                            ^
/Users/jonas/src/zig/zig/lib/std/io/reader.zig:27:26: 0x102b0513f in read (zig)
            return readFn(self.context, buffer);
                         ^
/Users/jonas/src/zig/zig/lib/std/io/reader.zig:46:42: 0x1028cbf8b in readAtLeast (zig)
                const amt = try self.read(buffer[index..]);
                                         ^
/Users/jonas/src/zig/zig/lib/std/tar.zig:153:50: 0x1028cb743 in pipeToFileSystem__anon_49750 (zig)
                    end += try reader.readAtLeast(buffer[end..], ask);
                                                 ^
/Users/jonas/src/zig/zig/src/Package.zig:589:33: 0x1028cc27b in unpackTarball__anon_49516 (zig)
    try std.tar.pipeToFileSystem(out_dir, decompress.reader(), .{
                                ^
/Users/jonas/src/zig/zig/src/Package.zig:508:30: 0x1028ddde7 in fetchAndUnpack (zig)
            try unpackTarball(gpa, &req, tmp_directory.handle, std.compress.gzip);
                             ^
/Users/jonas/src/zig/zig/src/Package.zig:283:43: 0x1028e53b7 in fetchAndAddDependencies (zig)
        const sub_pkg = try fetchAndUnpack(
                                          ^
/Users/jonas/src/zig/zig/src/main.zig:4402:67: 0x10273ba3b in cmdBuild (zig)
            const fetch_result = build_pkg.fetchAndAddDependencies(
                                                                  ^
/Users/jonas/src/zig/zig/src/main.zig:299:24: 0x102708f6f in mainArgs (zig)
        return cmdBuild(gpa, arena, cmd_args);
                       ^
/Users/jonas/src/zig/zig/src/main.zig:212:20: 0x102707b13 in main (zig)
    return mainArgs(gpa, arena, args);
                   ^
/Users/jonas/src/zig/zig/lib/std/start.zig:609:37: 0x10270a08f in main (zig)
            const result = root.main() catch |err| {
                                    ^
???:?:?: 0x18bab3f27 in ??? (???)
???:?:?: 0x6d02ffffffffffff in ??? (???)
[1]    76209 abort      /Users/jonas/src/zig/zig/build/stage3/bin/zig build run-hello
➜

@kamidev
Copy link
Author

kamidev commented May 16, 2023

Other people seem to have similar problems, see this issue.

@renerocksai
Copy link
Member

renerocksai commented May 16, 2023

Please use release-0.0.20-localhost. This references its dependencies on localhost to work around current Zig master's TLS bug when fetching from GitHub.

$ # get dependency required by zap
$ wget https://github.com/zigzap/facil.io/archive/refs/tags/zap-0.0.8.tar.gz
$ # get zap itself
$ wget https://github.com/zigzap/zap/archive/refs/tags/release-0.0.20-localhost.tar.gz
$ # start a http server on port 8000
$ python -m http.server 

This hosts the downloaded dependencies locally on port 8000. After the firstzig build, you can stop the python http server with CTRL+C.

If you want to build the examples, you don't need to download the ZAP release tar.gz, you only need the facil.io dependency:

$ wget https://github.com/zigzap/facil.io/archive/refs/tags/zap-0.0.8.tar.gz

@renerocksai
Copy link
Member

renerocksai commented May 16, 2023

std.crypto.tls and std.http etc are all parts of the Zig standard library. Zap does not use them. So please, join in on ziglang/zig#15990.

@renerocksai renerocksai added the deferred-to-zig-bug issue is caused by a bug in zig label May 16, 2023
@renerocksai
Copy link
Member

I've created a dedicated doc for this issue and also linked to it in the readme.

I will leave this issue open, hoping it might help other people encountering similar problems.

@kamidev
Copy link
Author

kamidev commented May 16, 2023

Thanks, I'll try the localhost workaround. Hope the upstream issue gets sorted out, I like the simplicity of what you are trying to do with zap.

Update: the release-0.0.20-localhost branch works just fine!

@renerocksai
Copy link
Member

Update! According to the commit log, Andrew fixed the underlying TLS bug about 14h ago. Unfortunately, it didn't make it into the current nightly build. But from tomorrow (CI server time) on, this bug should be history!

Will close this issue after I have validated the fix on my side.

@kamidev
Copy link
Author

kamidev commented May 19, 2023

Nice! Building and running zap master works without workarounds today.

@renerocksai
Copy link
Member

Closing it as zig is fixed now. Feel free to re-open if you think this is a mistake ☺️

@kamidev
Copy link
Author

kamidev commented May 19, 2023

I tested cloning master and running on an Intel Mac and on a Pi400 running Manjaro, too. "zig build run-hello" works out-of-the-box, this is definitely fixed. :-)

@renerocksai
Copy link
Member

renerocksai commented May 19, 2023

Oh, this (wrk_zigstd) is a totally forgotten project. Using the zig std HTTP server that keeps on changing. I'll have a look and include in the build_all schript so it gets checked by CI as well.

@renerocksai renerocksai reopened this May 19, 2023
@renerocksai
Copy link
Member

OK, I fixed it. Will push shortly. Won't make a release for it tho, as it's not zap per se that's modified.

@renerocksai
Copy link
Member

fixed in 0c18565

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
deferred-to-zig-bug issue is caused by a bug in zig
Projects
None yet
Development

No branches or pull requests

2 participants