Re: Could anyone give a short info on tracking refcounting bugs?



Tristan, Jasper,

thank you for such quick response!

I've created debug report from gdb and now I am seeking for unpaired ref/unref.

Tristan, would you mind if I post a bugzilla bug about adding such
quick tutorial to the docs at
http://developer.gnome.org/gobject/stable/tools-refdb.html? I would
like to use your mail as a starting point.

I've also found
(https://bugzilla.gnome.org/show_bug.cgi?id=606044#c45) there was a
suggestion to add info about using systemtap to docs, but I am unable
to volunteer in such case because I had problems in running systemtap:

$ stap --ldd debugging/alive.stp -c 'src/myapp -c config.xml'
semantic error: probe point mismatch at position 0  (alternatives:
__nfs __scheduler __signal __tcpmib __vm _linuxmib _signal _sunrpc
_syscall _vfs begin begin(number) end end(number) error error(number)
generic ioblock ioblock_trace ioscheduler ioscheduler_trace ipmib
irq_handler kernel kprobe kprocess linuxmib module(string) nd_syscall
netdev never nfs nfsd perf process process(number) process(string)
procfs procfs(string) scheduler scsi signal socket softirq stap
staprun sunrpc syscall tcp tcpmib timer tty udp vfs vm workqueue):
identifier 'gobject' at debugging/alive.stp:2:7 while resolving probe
point gobject.object_new
        source: probe gobject.object_new {
                      ^
semantic error: probe point mismatch at position 0  (alternatives:
__nfs __scheduler __signal __tcpmib __vm _linuxmib _signal _sunrpc
_syscall _vfs begin begin(number) end end(number) error error(number)
generic ioblock ioblock_trace ioscheduler ioscheduler_trace ipmib
irq_handler kernel kprobe kprocess linuxmib module(string) nd_syscall
netdev never nfs nfsd perf process process(number) process(string)
procfs procfs(string) scheduler scsi signal socket softirq stap
staprun sunrpc syscall tcp tcpmib timer tty udp vfs vm workqueue):
identifier 'gobject' at :5:7 while resolving probe point
gobject.object_finalize
        source: probe gobject.object_finalize {
                      ^
Pass 2: analysis failed.  Try again with another '--vp 01' option.


script was:

global alive
probe gobject.object_new {
 alive[type]++
}
probe gobject.object_finalize {
 alive[type]--
}
probe end {
  printf ("Alive objects: \n")
  foreach (a in alive) {
   if (alive[a] > 0)
     printf ("%d\t%s\n", alive[a], a)
  }
}


-- 
Marcin Lewandowski


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]