Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Jul 2017 01:03:08 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 220930] DTrace, pid provider: Can't get a trace of a malloc function in google-perftools
Message-ID:  <bug-220930-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D220930

            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@FreeBSD.org
          Reporter: yuri@rawbw.com

Created attachment 184607
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D184607&action=
=3Dedit
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=3D/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+ sta=
te
forever.

All errors are invalid. pidNNN argument should be valid in line 9, and mall=
oc
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, 'kill=
all
-9 dtrace' does.

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-220930-8>