Greetings,
I tried to catch the place in my kernel module (actually, a socket
module) from where kmem_[z]alloc() is called with a zero length
parameter. Using the script below, this basically works:
#!/usr/sbin/dtrace -s
fbt::kmem_alloc:entry
/arg0 == 0/
{
stack();
}
fbt::kmem_zalloc:entry
/arg0 == 0/
{
stack();
}
However, the printout does not show the function names of my module:
[EMAIL PROTECTED] # ./kmem_alloc_zerolen.d
dtrace: script './kmem_alloc_zerolen.d' matched 2 probes
CPU ID FUNCTION:NAME
1 12069 kmem_alloc:entry
0xfffffffff86ca627
0xfffffffff86b825b
0xfffffffff86ad139
sockfs`socket_ioctl+0x2a
sockfs`socket_vop_ioctl+0x57
genunix`fop_ioctl+0x7b
genunix`ioctl+0x174
unix`sys_syscall+0x272
Notes that may or may not be relevant:
- I have post-processed my module to contain CTF information.
- The topmost function in my module is called via a function ptr (socket
ops ptr)
- The socket modules are loaded when I open the socket, and unloaded
right when it's closed - maybe a race when mapping the addresses to the
symbol table?
- Function names where printed fine for others of our modules I dtraced
before.
thanks for hints, Joachim
--
Joachim Worringen, Software Architect, Dolphin Interconnect Solutions
phone ++49/(0)228/324 08 17 - http://www.dolphinics.com
_______________________________________________
dtrace-discuss mailing list
[email protected]