I am running into a seg fault. The code keeps crashing either due to
unexpected signal or double free.
Any pointers on what I am doing wrong here:
Code Snippet:
// Put puts the given key / value to the kvstore
func (kvs *kvstore) Put(key []byte, value []byte) error {
/* Encode key to avoid null characters in byte[] */
strk := base64.StdEncoding.EncodeToString([]byte(key))
csk := C.CString(strk)
defer C.free(unsafe.Pointer(csk))
/* Encode value to avoid null characters in byte[] */
strv := base64.StdEncoding.EncodeToString([]byte(value))
csv := C.CString(strv)
defer C.free(unsafe.Pointer(csv))
if kvs.kvtree == nil {
return fmt.Errorf("put failed because kvtree is nil")
}
size := C.int32_t(len(strv))
ret := C.put(kvs.kvtree, csk, csv, &size)
if ret != C.int8_t(1) {
return fmt.Errorf("kvtree put failed %g", ret)
}
return nil
}
C Function Put:
int8_t put(KVTree* kv,
const char* key,
const char* value,
const int32_t* valuebytes);
Stack Trace:
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x80 addr=0x0
pc=0x7fcb5ae54390]
runtime stack:
runtime.throw(0xeffa94, 0x2a)
/usr/lib/go-1.8/src/runtime/panic.go:596 +0x95
runtime.sigpanic()
/usr/lib/go-1.8/src/runtime/signal_unix.go:274 +0x2db
goroutine 1117 [syscall, locked to thread]:
runtime.cgocall(0xc88080, 0xc4204d7a70, 0xc4204d7a98)
/usr/lib/go-1.8/src/runtime/cgocall.go:131 +0xe2 fp=0xc4204d7a40
sp=0xc4204d7a00
github.com/app/go-app/tempdb._Cfunc_put(0x34ebfd0, 0x7fcb4c027550,
0x7fcb4c008b10, 0x7fcb4c00cf90, 0x0)
github.com/app/go-app/tempdb/_obj/_cgo_gotypes.go:131 +0x4a
fp=0xc4204d7a70 sp=0xc4204d7a40
github.com/app/go-app/tempdb.(*kvstore).Put.func4(0x34ebfd0,
0x7fcb4c027550, 0x7fcb4c008b10, 0x7fcb4c00cf90, 0xc42192a1ec)
/root/go-app/build/_workspace/src/github.com/app/go-app/tempdb/database.go:164
+0x82 fp=0xc4204d7aa8 sp=0xc4204d7a70
github.com/app/go-app/tempdb.(*kvstore).Put(0xc420246c60, 0xc4218bc8a0,
0x29, 0x30, 0xc42192a1e4, 0x1, 0x1, 0x0, 0x0)
/root/go-app/build/_workspace/src/github.com/app/go-app/tempdb/database.go:164
+0x1d3 fp=0xc4204d7b40 sp=0xc4204d7aa8
github.com/app/go-app/core.WriteBlockReceipts(0x16dd480, 0xc420246c60,
0xffcd5c15251c6f60, 0x36efda5ab3f463e3, 0x2f747de9501058d8,
0x1000f51c73e6dc25, 0xe8, 0x0, 0x0, 0x0, ...)
/root/go-app/build/_workspace/src/github.com/app/go-app/core/database_util.go:428
+0x2f3 fp=0xc4204d7c88 sp=0xc4204d7b40
github.com/app/go-app/core.(*BC).InsertRC.func1(0x1)
/root/go-app/build/_workspace/src/github.com/app/go-app/core/bc.go:750
+0x4d3 fp=0xc4204d7fa0 sp=0xc4204d7c88
github.com/app/go-app/core.(*BC).InsertRC.func2(0xc421825670, 0xc420d0fce0,
0x1)
/root/go-app/build/_workspace/src/github.com/app/go-app/core/bc.go:777
+0x56 fp=0xc4204d7fc8 sp=0xc4204d7fa0
runtime.goexit()
/usr/lib/go-1.8/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc4204d7fd0
sp=0xc4204d7fc8
created by github.com/app/go-app/core.(*BC).InsertRC
/root/go-app/build/_workspace/src/github.com/app/go-app/core/bc.go:778
+0x5da
Thanks,
Bhaskar
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.