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

wasm error: out of bounds memory access #3836

Closed
ptman opened this issue Feb 12, 2025 · 17 comments · Fixed by #3887
Closed

wasm error: out of bounds memory access #3836

ptman opened this issue Feb 12, 2025 · 17 comments · Fixed by #3887
Labels
📚 postgresql bug Something isn't working 💻 linux regression upstream Issue is caused by a dependency 🔧 golang

Comments

@ptman
Copy link

ptman commented Feb 12, 2025

Version

1.28.0

What happened?

sqlc generate crashes. It did work using sqlc 1.27.0

Relevant log output

$ sqlc generate
panic: start function[17] failed: wasm error: out of bounds memory access
        wasm stack trace:
                .$17()

goroutine 15 [running]:
github.com/wasilibs/go-pgquery/parser.newABI()
        $HOME/go/pkg/mod/github.com/wasilibs/go-pgquery@v0.0.0-20241011013927-817756c5aae4/parser/parser_wazero.go:161 +0x15b0      
github.com/wasilibs/go-pgquery/parser.getABI()
        $HOME/go/pkg/mod/github.com/wasilibs/go-pgquery@v0.0.0-20241011013927-817756c5aae4/parser/parser_wazero.go:203 +0x14a      
github.com/wasilibs/go-pgquery/parser.ParseToProtobuf({0xc000524800, 0x4345})
        $HOME/go/pkg/mod/github.com/wasilibs/go-pgquery@v0.0.0-20241011013927-817756c5aae4/parser/parser_wazero.go:62 +0x52      
github.com/wasilibs/go-pgquery.Parse({0xc000524800?, 0xc00054c000?})
        $HOME/go/pkg/mod/github.com/wasilibs/go-pgquery@v0.0.0-20241011013927-817756c5aae4/pg_query.go:27 +0x18      
github.com/sqlc-dev/sqlc/internal/engine/postgresql.(*Parser).Parse(0x0?, {0x1d9eb00?, 0xc0005a0fa0?})
        $HOME/go/pkg/mod/github.com/sqlc-dev/sqlc@v1.28.0/internal/engine/postgresql/parse.go:154 +0x57      
github.com/sqlc-dev/sqlc/internal/compiler.(*Compiler).parseCatalog(0xc000622a08, {0xc00008f7e0?, 0xc000602060?, 0xa?})
        $HOME/go/pkg/mod/github.com/sqlc-dev/sqlc@v1.28.0/internal/compiler/compile.go:42 +0x238      
github.com/sqlc-dev/sqlc/internal/compiler.(*Compiler).ParseCatalog(...)
        $HOME/go/pkg/mod/github.com/sqlc-dev/sqlc@v1.28.0/internal/compiler/engine.go:68      
github.com/sqlc-dev/sqlc/internal/cmd.parse({_, _}, {_, _}, {_, _}, {{0x0, 0x0}, {0xc000602060, 0xa}, ...}, ...)
        $HOME/go/pkg/mod/github.com/sqlc-dev/sqlc@v1.28.0/internal/cmd/generate.go:308 +0x198      
github.com/sqlc-dev/sqlc/internal/cmd.processQuerySets.func1()
        $HOME/go/pkg/mod/github.com/sqlc-dev/sqlc@v1.28.0/internal/cmd/process.go:107 +0x81a      
golang.org/x/sync/errgroup.(*Group).Go.func1()
        $HOME/go/pkg/mod/golang.org/x/sync@v0.11.0/errgroup/errgroup.go:78 +0x50      
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 1
        $HOME/go/pkg/mod/golang.org/x/sync@v0.11.0/errgroup/errgroup.go:75 +0x93    

What operating system are you using?

Linux

What database engines are you using?

PostgreSQL

What type of code are you generating?

Go

@ptman ptman added the bug Something isn't working label Feb 12, 2025
@dunghm19
Copy link

Have you found a solution yet?

@luyendx
Copy link

luyendx commented Feb 14, 2025

i have same issue with go1.24.0 windows/amd64
i did work with sqlc 1.27.0

@karaMuha
Copy link

I have the same issue with go 1.24.0 linux/amd64

@kyleconroy
Copy link
Collaborator

Hey everyone, thanks for helping track down this issue. I think this may be an upstream issue (wasilibs/go-pgquery#34). In the meantime, can you please post a bit more information about your error?

  • Are you using the precompiled binaries or are you building it from source?
  • If building from source, what version of Go are you using?
  • If you're using Go 1.24, does using Go 1.23 make it work?

@kyleconroy kyleconroy pinned this issue Feb 15, 2025
@kyleconroy
Copy link
Collaborator

Confirmed this is an upstream issue, tracking here tetratelabs/wazero#2375

@ptman
Copy link
Author

ptman commented Feb 24, 2025

Now that it's fixed, and a new version of wazero has been released, sqlc needs to upgrade the deps for go 1.24 compat. There seems to be a problem with pg_query_go/v5 vs. pg_query_go/v6.

@Waldenesque
Copy link

Don't know if this is worth noting or not...

tetratelabs/wazero#2382

Might still be another patch bump to wazero coming before long?

@danielalexis
Copy link

No update yet. Works on one machine but not another

@Dzejk0p
Copy link

Dzejk0p commented Mar 18, 2025

Has anyone found a solution/workaround yet?

@svenwltr
Copy link

Has anyone found a solution/workaround yet?

It seems the fix was already merged in github.com/tetratelabs/wazero, but there were no relases yet. I was able to hotfix the issue by explicitly using the latest commit with go get github.com/tetratelabs/wazero@26d5f5eb4bd0a0b302927f84776312c58c41afb6.

@danielalexis
Copy link

danielalexis commented Mar 18, 2025 via email

@nixoncode
Copy link

I really didn't want to downgrade go, I switched to wsl on windows and ran the sqlc generate command and it worked.

is it only isolated to Windows?

@Cesar-Castill0
Copy link

Using Go 1.23 and SQLC 1.27 in WSL works for me. Alternatively, you could use a Go version manager (like gvm) to run SQLC on Go 1.27 or below, while keeping your main project on Go 1.24.

@nixoncode
Copy link

Using Go 1.23 and SQLC 1.27 in WSL works for me. Alternatively, you could use a Go version manager (like gvm) to run SQLC on Go 1.27 or below, while keeping your main project on Go 1.24.

I'm on 1.24/1.28 myself. I managed to run it successfully on WSL, Windows still throws the error, I was just suggesting that it might be a windows only issue.

Thanks for the gvm suggestion, never heard of it but it sounds cool.

@Cesar-Castill0
Copy link

Cesar-Castill0 commented Mar 20, 2025

Using Go 1.23 and SQLC 1.27 in WSL works for me. Alternatively, you could use a Go version manager (like gvm) to run SQLC on Go 1.27 or below, while keeping your main project on Go 1.24.

I'm on 1.24/1.28 myself. I managed to run it successfully on WSL, Windows still throws the error, I was just suggesting that it might be a windows only issue.

Thanks for the gvm suggestion, never heard of it but it sounds cool.

I hear you , I was actually responding to Dzejk0p that WSL also works for me. In my testing I only got the issue with go 1.24* on windows with several sqlc versions, tried it on a Linux mint machine (go 1.24*) with no issues, definitely possible that the issue is windows specific. And Yeah I recently learned of it myself haha

@danielalexis
Copy link

go 1.28
i think you meant SQLC 1.28

@Cesar-Castill0
Copy link

go 1.28
i think you meant SQLC 1.28

Corrected, thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📚 postgresql bug Something isn't working 💻 linux regression upstream Issue is caused by a dependency 🔧 golang
Projects
None yet
Development

Successfully merging a pull request may close this issue.