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.

Reply via email to