I think you may be right, and I think I was barking up the wrong tree. Sorry.
Regards – Bhaskar On Monday, February 17, 2020 at 11:20:07 AM UTC-5, Nitish Saboo wrote: > > Hi, > > How can runtime.Keepalive be helpful here ? > > Thanks, > Nitish > > On Mon, Feb 17, 2020 at 9:14 PM K.S. Bhaskar <ksbh...@gmail.com > <javascript:>> wrote: > >> See whether runtime.Keepalive (https://golang.org/pkg/runtime/#KeepAlive) >> helps. >> >> Regards >> – Bhaskar >> >> On Monday, February 17, 2020 at 10:33:42 AM UTC-5, Nitish Saboo wrote: >>> >>> Hi, >>> >>> These are my Go and C functions.I cannot explicitly garbage collect the >>> C method before use, not sure if that is the issue. >>> The first line in the 'match' method itself is not getting printed. >>> >>> void match(const gchar *x, size_t len_x, const gchar *y, size_t len_y) >>> { >>> printf("Reached match method "); >>> LogMessage *msg = log_msg_new_empty(); >>> log_msg_set_value(msg, LM_V_MESSAGE, x, len_x); >>> log_msg_set_value(msg, LM_V_PROGRAM, y, len_y); >>> pattern_db_process(db_pattern, msg); >>> log_msg_unref(msg); >>> >>> } >>> >>> func (obj parser) ParseMessage(x string, y string) >>> { >>> >>> app := C.CString(x) >>> defer C.free(unsafe.Pointer(app)) >>> msg := C.CString(y) >>> defer C.free(unsafe.Pointer(msg)) >>> C.match(msg, C.size_t(len(y)), app, C.size_t(len(x))) >>> } >>> >>> Thanks, >>> Nitish >>> >>> On Mon, Feb 17, 2020 at 8:14 PM K.S. Bhaskar <ksbh...@gmail.com> wrote: >>> >>>> Chances are that a parameter or structure you are passing from Go to C >>>> is getting garbage collected by Go before the C code is done with it. Read >>>> the CGO documentaton – it's dense, but every sentence, every word, has a >>>> purpose. >>>> >>>> In case it helps, take a look at the video of my recent talk at FOSDEM >>>> 2020 in Brussels (https://fosdem.org/2020/schedule/event/dragonscgo/); >>>> slides at >>>> https://docs.yottadb.com/Presentations/200202-1DragonsofCGOFOSDEM.pdf >>>> >>>> Regards >>>> – Bhaskar >>>> >>>> On Monday, February 17, 2020 at 9:33:00 AM UTC-5, Nitish Saboo wrote: >>>>> >>>>> Hi, >>>>> >>>>> This is my go env: >>>>> >>>>> nsaboo@ubuntu:~$ go version >>>>> go version go1.12.4 linux/amd64 >>>>> nsaboo@ubuntu:~$ go env >>>>> GOARCH="amd64" >>>>> GOBIN="" >>>>> GOCACHE="/home/nsaboo/.cache/go-build" >>>>> GOEXE="" >>>>> GOFLAGS="" >>>>> GOHOSTARCH="amd64" >>>>> GOHOSTOS="linux" >>>>> GOOS="linux" >>>>> GOPATH="/home/nsaboo/Documents/goworkspace" >>>>> GOPROXY="" >>>>> GORACE="" >>>>> GOROOT="/usr/local/go" >>>>> GOTMPDIR="" >>>>> GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" >>>>> GCCGO="gccgo" >>>>> CC="gcc" >>>>> CXX="g++" >>>>> CGO_ENABLED="1" >>>>> GOMOD="" >>>>> CGO_CFLAGS="-g -O2" >>>>> CGO_CPPFLAGS="" >>>>> CGO_CXXFLAGS="-g -O2" >>>>> CGO_FFLAGS="-g -O2" >>>>> CGO_LDFLAGS="-g -O2" >>>>> PKG_CONFIG="pkg-config" >>>>> GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 >>>>> -fdebug-prefix-map=/tmp/go-build659816641=/tmp/go-build >>>>> -gno-record-gcc-switches" >>>>> >>>>> 'go build -v -x main.go' went through fine and the binary(main) was >>>>> created successfully. >>>>> >>>>> While making a cgo call from go code to C code I am getting the >>>>> following error: >>>>> >>>>> nsaboo@ubuntu:~/Documents/goworkspace/src/poc$ ./main >>>>> GOMAZPROCS : 2 >>>>> START >>>>> DIR: /home/nsaboo/Documents/goworkspace/src/poc >>>>> Reached C module path :/usr/local/lib/syslog-ng >>>>> Reached C filepath >>>>> :/home/nsaboo/Documents/goworkspace/src/poc/patterns_test.xml >>>>> Printing patterndb address: 0x151e1e0 >>>>> Just before parsing >>>>> fatal error: unexpected signal during runtime execution >>>>> [signal SIGSEGV: segmentation violation code=0x1 >>>>> addr=0xffffffff04d07885 pc=0x7fe62f2d2922] >>>>> >>>>> runtime stack: >>>>> runtime.throw(0x4f7e77, 0x2a) >>>>> /usr/local/go/src/runtime/panic.go:617 +0x72 >>>>> runtime.sigpanic() >>>>> /usr/local/go/src/runtime/signal_unix.go:374 +0x4a9 >>>>> >>>>> goroutine 1 [syscall]: >>>>> runtime.cgocall(0x4b7380, 0xc000044d90, 0xc0000a8000) >>>>> /usr/local/go/src/runtime/cgocall.go:128 +0x5b fp=0xc000044d60 >>>>> sp=0xc000044d28 pc=0x404f4b >>>>> main._Cfunc_match(0x16e3880, 0x16c, 0x154d680, 0x7) >>>>> _cgo_gotypes.go:165 +0x45 fp=0xc000044d90 sp=0xc000044d60 pc=0x4b4825 >>>>> main.Syslogparser.ParseMessage(0xc0000a4000, 0x3c, 0x4f47dd, 0x18, >>>>> 0xc0000a6000, 0x0, 0x7, 0x4f915f, 0x16c) >>>>> /home/nsaboo/Documents/goworkspace/src/poc/main.go:120 +0x12c >>>>> fp=0xc000044e10 sp=0xc000044d90 pc=0x4b56ec >>>>> main.main() >>>>> /home/nsaboo/Documents/goworkspace/src/poc/main.go:219 +0x3c1 >>>>> fp=0xc000044f98 sp=0xc000044e10 pc=0x4b6031 >>>>> runtime.main() >>>>> /usr/local/go/src/runtime/proc.go:200 +0x20c fp=0xc000044fe0 >>>>> sp=0xc000044f98 pc=0x42cd7c >>>>> runtime.goexit() >>>>> /usr/local/go/src/runtime/asm_amd64.s:1337 +0x1 fp=0xc000044fe8 >>>>> sp=0xc000044fe0 pc=0x4548a1 >>>>> >>>>> 1)How can I debug this error further ? >>>>> >>>>> 2)What could be the reason for this error ? >>>>> >>>>> Thanks, >>>>> Nitish >>>>> >>>> -- >>>> 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 golan...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/golang-nuts/4ce0c9a3-9ed7-4408-9d49-d8b0b2960ea4%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/golang-nuts/4ce0c9a3-9ed7-4408-9d49-d8b0b2960ea4%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> 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 golan...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/225d453d-1f5f-4da1-8b65-d97ba3b404f1%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/225d453d-1f5f-4da1-8b65-d97ba3b404f1%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- 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 golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/1c2593f2-b0ee-432f-a312-b42065e7928c%40googlegroups.com.