Stream: general

Topic: Override wasi function in a go app I integrated


view this post on Zulip celine santosh (Jul 23 2024 at 13:16):

Hi

I wanted to know if anyone has an idea how is it possible to override wasi function say for eg start_connect() in a go app that I have instantiated in wasmtime?

thanks

view this post on Zulip Alex Crichton (Jul 23 2024 at 14:53):

If you want to override a single function you can add functions yourself to the Linker, but that is likely to be somewhat difficult to work around and brittle (but possible). Otherwise that level of customization probably needs support in wasmtime-wasi itself which would require a PR

view this post on Zulip celine santosh (Jul 23 2024 at 20:46):

okay
So I have a go application as below

package main

import (
    "fmt"
    "net"
   "os"
)

func main() {
    fmt.Println("I am from Go app")

     // Make a TCP connection
    conn, err := net.Dial("tcp", "example.com:80")

    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(1)
    }

    // Ensure conn is not nil before using it
    if conn == nil {
        fmt.Println("Connection is nil")
        os.Exit(1)
    } else {
        fmt.Println("Connected to example.com:80")
        conn.Close()
    }
}

I haven't added the linker and all in wasmtime file. I just integrated this app to wasmtime and ran it. So only "I am from Go app" is being printed. then after that I am getting error
Error: error while executing at wasm backtrace:

0: 0xcb6c - main!runtime.runtimePanicAt

1: 0x4920 - main!runtime.nilPanic

2: 0x2d119 - main!net.Dial

3: 0xecdb - main!main.main

4: 0xe625 - main!runtime.run$1

5: 0xe54c - main!runtime.run$1$gowrapper

6:  0x3e0 - main!tinygo_launch

7: 0xe443 - main!_start

note: using the WASMTIME_BACKTRACE_DETAILS=1 environment variable may show more debugging information

Caused by:

wasm trap: wasm unreachable instruction executed

Any idea why is this so?
when I run this go program separately it works

view this post on Zulip Alex Crichton (Jul 23 2024 at 21:45):

That looks like the Go runtime is panicking, and alas I don't know enough about it myself to be able to know more

view this post on Zulip celine santosh (Jul 25 2024 at 15:48):

But when I run the go program alone it runs perfect. With wasmtime it causes error. I read somewhere tiny go compiler supports wasi preview 1 only. is that the problem?
then I compiled using standard Go compiler , it gives error connection refused.
but separately it runs perfect. Any idea?

view this post on Zulip Alex Crichton (Jul 25 2024 at 16:01):

Sorry I don't know enough about TinyGo myself to answer that


Last updated: Dec 23 2024 at 12:05 UTC