We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
For https://github.com/second-state/WasmEdge-go-examples/blob/master/go_BindgenFuncs/bindgen_funcs.go
If I put the vm as a global variable, and call the vm.ExecuteBindgen in goroutine:
vm.ExecuteBindgen
package main import ( "fmt" "os" "github.com/second-state/WasmEdge-go/wasmedge" ) var vm *wasmedge.VM func main() { /// Expected Args[0]: program name (./bindgen_funcs) /// Expected Args[1]: wasm or wasm-so file (rust_bindgen_funcs_lib_bg.wasm)) /// Set not to print debug info wasmedge.SetLogErrorLevel() /// Create configure var conf = wasmedge.NewConfigure(wasmedge.WASI) /// Create VM with configure vm = wasmedge.NewVMWithConfig(conf) /// Init WASI var wasi = vm.GetImportObject(wasmedge.WASI) wasi.InitWasi( os.Args[1:], /// The args os.Environ(), /// The envs []string{".:."}, /// The mapping directories []string{}, /// The preopens will be empty ) /// Instantiate wasm vm.LoadWasmFile(os.Args[1]) vm.Validate() vm.Instantiate() go run() run() vm.Delete() conf.Delete() } func run() { /// Run bindgen functions var res interface{} var err error /// create_line: array, array, array -> array (inputs are JSON stringified) res, err = vm.ExecuteBindgen("create_line", wasmedge.Bindgen_return_array, []byte("{\"x\":1.5,\"y\":3.8}"), []byte("{\"x\":2.5,\"y\":5.8}"), []byte("A thin red line")) if err == nil { fmt.Println("Run bindgen -- create_line:", string(res.([]byte))) } else { fmt.Println("Run bindgen -- create_line FAILED") } /// say: array -> array res, err = vm.ExecuteBindgen("say", wasmedge.Bindgen_return_array, []byte("bindgen funcs test")) if err == nil { fmt.Println("Run bindgen -- say:", string(res.([]byte))) } else { fmt.Println("Run bindgen -- say FAILED") } /// obfusticate: array -> array res, err = vm.ExecuteBindgen("obfusticate", wasmedge.Bindgen_return_array, []byte("A quick brown fox jumps over the lazy dog")) if err == nil { fmt.Println("Run bindgen -- obfusticate:", string(res.([]byte))) } else { fmt.Println("Run bindgen -- obfusticate FAILED") } /// lowest_common_multiple: i32, i32 -> i32 res, err = vm.ExecuteBindgen("lowest_common_multiple", wasmedge.Bindgen_return_i32, int32(123), int32(2)) if err == nil { fmt.Println("Run bindgen -- lowest_common_multiple:", res.(int32)) } else { fmt.Println("Run bindgen -- lowest_common_multiple FAILED") } /// sha3_digest: array -> array res, err = vm.ExecuteBindgen("sha3_digest", wasmedge.Bindgen_return_array, []byte("This is an important message")) if err == nil { fmt.Println("Run bindgen -- sha3_digest:", res.([]byte)) } else { fmt.Println("Run bindgen -- sha3_digest FAILED") } /// keccak_digest: array -> array res, err = vm.ExecuteBindgen("keccak_digest", wasmedge.Bindgen_return_array, []byte("This is an important message")) if err == nil { fmt.Println("Run bindgen -- keccak_digest:", res.([]byte)) } else { fmt.Println("Run bindgen -- keccak_digest FAILED") } }
Then the program will fail with error:
unexpected signal during runtime execution [signal SIGSEGV: segmentation violation code=0x1 addr=0x4 pc=0x7f1311798288] runtime stack: runtime.throw({0x4b41a6, 0x0}) /usr/local/go/src/runtime/panic.go:1198 +0x71 runtime.sigpanic() /usr/local/go/src/runtime/signal_unix.go:719 +0x396 goroutine 6 [syscall]: runtime.cgocall(0x493420, 0xc00004acd0) /usr/local/go/src/runtime/cgocall.go:156 +0x5c fp=0xc00004ac98 sp=0xc00004ac60 pc=0x40a2dc github.com/second-state/WasmEdge-go/wasmedge._Cfunc_WasmEdge_VMExecute(0xfbd420, {0xb, 0x4ae60d}, 0xc00010a180, 0x7, 0x0, 0x0) _cgo_gotypes.go:1779 +0x49 fp=0xc00004acd0 sp=0xc00004ac98 pc=0x489a89 github.com/second-state/WasmEdge-go/wasmedge.(*VM).ExecuteBindgen.func1(0xc00004afa0, {0x3, 0x4ae60d}, 0x100000000000000, {0xc00010a180, 0x7, 0x18}, 0x7f1310afb108, {0x57d8f0, 0x0, ...}) /root/github/second-state/WasmEdge-go/wasmedge/vm.go:218 +0xb1 fp=0xc00004ad48 sp=0xc00004acd0 pc=0x48fcf1 github.com/second-state/WasmEdge-go/wasmedge.(*VM).ExecuteBindgen(0xc0000162e0, {0x4ae60d, 0xb}, 0x0, {0xc00004afa0, 0x3, 0x3}) /root/github/second-state/WasmEdge-go/wasmedge/vm.go:218 +0x169 fp=0xc00004ae00 sp=0xc00004ad48 pc=0x48fb29 main.run() /root/github/second-state/WasmEdge-go-examples/go_BindgenFuncs/bindgen_funcs.go:52 +0x196 fp=0xc00004afe0 sp=0xc00004ae00 pc=0x491036 runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00004afe8 sp=0xc00004afe0 pc=0x4630e1 created by main.main /root/github/second-state/WasmEdge-go-examples/go_BindgenFuncs/bindgen_funcs.go:39 +0x1d6 goroutine 1 [runnable]: github.com/second-state/WasmEdge-go/wasmedge._Cfunc_WasmEdge_VMExecute(0xfbd420, {0xb, 0x4ae6c8}, 0xc0000a60c0, 0x3, 0x0, 0x0) _cgo_gotypes.go:1779 +0x49 github.com/second-state/WasmEdge-go/wasmedge.(*VM).ExecuteBindgen.func1(0xc000049d30, {0x1, 0x4ae6c8}, 0x10000c000049c80, {0xc0000a60c0, 0x3, 0x18}, 0x7f1310afb5b8, {0x57d8f0, 0x0, ...}) /root/github/second-state/WasmEdge-go/wasmedge/vm.go:218 +0xb1 github.com/second-state/WasmEdge-go/wasmedge.(*VM).ExecuteBindgen(0xc0000a0120, {0x4ae6c8, 0xb}, 0x2, {0xc000049d30, 0x1, 0x1}) /root/github/second-state/WasmEdge-go/wasmedge/vm.go:218 +0x169 main.run() /root/github/second-state/WasmEdge-go-examples/go_BindgenFuncs/bindgen_funcs.go:80 +0x74b main.main() /root/github/second-state/WasmEdge-go-examples/go_BindgenFuncs/bindgen_funcs.go:40 +0x1db
The text was updated successfully, but these errors were encountered:
q82419
No branches or pull requests
For https://github.com/second-state/WasmEdge-go-examples/blob/master/go_BindgenFuncs/bindgen_funcs.go
If I put the vm as a global variable, and call the
vm.ExecuteBindgen
in goroutine:Then the program will fail with error:
The text was updated successfully, but these errors were encountered: