[Bug 220930] DTrace, pid provider: Can't get a trace of a malloc function in google-perftools

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Jul 23 01:03:08 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220930

            Bug ID: 220930
           Summary: DTrace, pid provider: Can't get a trace of a malloc
                    function in google-perftools
           Product: Base System
           Version: 11.0-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: misc
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: yuri at rawbw.com

Created attachment 184607
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=184607&action=edit
malloc-user-process.d

Here's how to repeat:
1. Install qTox and google perftools: pkg install qTox google-perftools
2. Load dtraceall kernel module: kldload dtraceall.ko
3. Place the attached scripts 'start-process-and-wait' and
'malloc-user-process.d' into some directory and set +x flag on both.
4. As a regular user, start qTox in stopped mode:
LD_PRELOAD=/usr/local/lib/libtcmalloc.so  ./start-process-and-wait
/usr/local/bin/qtox
5. As root, with the pid printed on step 4, start dtrace:
./malloc-user-process.d {pid} > out.log

In many cases, step 5 prints one of these two error messages and exits:
> dtrace: failed to compile script ./malloc-user-process.d: line 9: Invalid argument
or
> dtrace: failed to compile script ./malloc-user-process.d: line 13: failed to create return probe for 'malloc': Unknown variable name
In both cases the debugged process gets continued.

In rare other cases dtrace continues and eventually deadlocks:
> dtrace: script './malloc-user-process.d' matched 2 probes
- at this point qtox process stays in TX+ state, and dtrace stays in S+ state
forever.

All errors are invalid. pidNNN argument should be valid in line 9, and malloc
symbol is always present by the virtue of LD_PRELOAD of the library with
'malloc' symbol in it.
dtrace shouldn't deadlock. Ctrl-C on dtrace doesn't stop it. However, 'killall
-9 dtrace' does.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list