Hi guys,

We are having a very weird problem, where the process memory keeps rising, 
but both the pprof and valgrind report no memory leaks. But the RSS just 
keeps rising.The C part is in external so library

To be more exact, the pprof when the process becomes idle reports a few 
megabytes used and the Valgrind reports 88bytes lost(this are global 
objects) But the RSS for example is ~1G and virtual 4G+
I've run also run the app with the GODEBUG=madvdontneed=1,gctrace=1 but 
madvdontneed doesn't seem to help.

If I describe the MO of communicating with the library's API (all memory is 
allocated on the library side). 

for {
  * initialize the processor 
  * say to the library to create the blob of size x on it's side
  * convert the returned pointer to a fake slice (code below)
  * copy data to the fake slice
  * instruct processor to do it's thing (e.g make calculations/compress the 
  * process the data on Go side (depending on the processor this either 
makes a copy of the data or creates a fake slice from it)
  * destroy the processor (this frees the memory on the library's side)
  * upload the data somewhere

func cVoidPtrToByteSlice(data unsafe.Pointer, size int, bytes *[]byte) {
    header := (*reflect.SliceHeader)(unsafe.Pointer(bytes))
    header.Data = uintptr(data)
    header.Len = size
    header.Cap = size


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 

Reply via email to