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.

Reply via email to