[Bug translator/18001] New: Using backtrace(), caller(), or callers(n) causes a gcc internal error

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] New: Using backtrace(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

            Bug ID: 18001
           Summary: Using backtrace(), caller(), or callers(n) causes a
                    gcc internal error
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: translator
          Assignee: systemtap at sourceware dot org
          Reporter: curzonj at gmail dot com

Overview: Calling caller() causes a gcc internal error.
Reproduce:

stap -k -v -e 'probe kernel.function("dev_hold") { printf("%s", caller()) }'

Actual Results: GCC internal error during compile.
Expected Results: Compile happens and script runs

I want to use caller, but I tried callers(n) and backtrack() and they caused
the same GCC internal error result.

The compile log and artifacts are here:
https://gist.github.com/curzonj/857090762c52730aa028

root@vagrant-ubuntu-trusty-64:/vagrant# uname -a
Linux vagrant-ubuntu-trusty-64 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13
19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
root@vagrant-ubuntu-trusty-64:/vagrant# dpkg -l | grep linux-image
ii  linux-image-3.13.0-40-generic        3.13.0-40.69                     amd64
       Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.13.0-40-generic-dbgsym 3.13.0-40.69                     amd64
       Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.13.0-45-generic        3.13.0-45.74                     amd64
       Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-3.13.0-45-generic-dbgsym 3.13.0-45.74                     amd64
       Linux kernel debug image for version 3.13.0 on 64 bit x86 SMP
ii  linux-image-virtual                  3.13.0.45.52                     amd64
       This package will always depend on the latest minimal generic kernel
image.
root@vagrant-ubuntu-trusty-64:/vagrant# dpkg -l | grep gcc
ii  gcc                                  4:4.8.2-1ubuntu6                 amd64
       GNU C compiler
ii  gcc-4.8                              4.8.2-19ubuntu1                  amd64
       GNU C compiler
ii  gcc-4.8-base:amd64                   4.8.2-19ubuntu1                  amd64
       GCC, the GNU Compiler Collection (base package)
ii  gcc-4.9-base:amd64                   4.9.1-0ubuntu1                   amd64
       GCC, the GNU Compiler Collection (base package)
ii  libgcc-4.8-dev:amd64                 4.8.2-19ubuntu1                  amd64
       GCC support library (development files)
ii  libgcc1:amd64                        1:4.9.1-0ubuntu1                 amd64
       GCC support library
root@vagrant-ubuntu-trusty-64:/vagrant# dpkg -l | grep systemtap
ii  systemtap                            2.3-1ubuntu1                     amd64
       instrumentation system for Linux
ii  systemtap-common                     2.3-1ubuntu1                     all  
       instrumentation system for Linux (common component)
ii  systemtap-runtime                    2.3-1ubuntu1                     amd64
       instrumentation system for Linux (runtime component)

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

curzonj at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Using backtrace(),          |Using sysname(), caller(),
                   |caller(), or callers(n)     |or callers(n) causes a gcc
                   |causes a gcc internal error |internal error

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
In reply to this post by glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

--- Comment #1 from curzonj at gmail dot com ---
I was wrong, about backtrace also causing a compile error. But here is some
more info.

This works:

stap -e 'probe kernel.function("dev_hold") { printf("%x", caller_addr());
exit() }'

But this fails:

stap -e 'probe kernel.function("dev_hold") { printf("%s",
symname(caller_addr())); exit() }'

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
In reply to this post by glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

--- Comment #2 from curzonj at gmail dot com ---
I tried it with the latest 2.7 code and it still happens:

root@vagrant-ubuntu-trusty-64:~# ./systemtap-2.7-19547/bin/stap -v -e 'probe
kernel.function("dev_hold") { printf("%s", caller()) }'
Pass 1: parsed user script and 106 library script(s) using
58116virt/34428res/2108shr/33140data kb, in 100usr/0sys/109real ms.
Pass 2: analyzed script: 50 probe(s), 9 function(s), 5 embed(s), 0 global(s)
using 102708virt/79992res/3248shr/77732data kb, in 1250usr/610sys/2204real ms.
Pass 3: translated to C into
"/tmp/stapYJx4LW/stap_e822ddb75f639bdc4f9d6dc5d068516b_16046_src.c" using
102708virt/80668res/3544shr/77732data kb, in 280usr/20sys/295real ms.
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[1]: ***
[/tmp/stapYJx4LW/stap_e822ddb75f639bdc4f9d6dc5d068516b_16046_src.o] Error 4
make: *** [_module_/tmp/stapYJx4LW] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compiled C into "stap_e822ddb75f639bdc4f9d6dc5d068516b_16046.ko" in
3930usr/1780sys/17480real ms.
Pass 4: compilation failed.  [man error::pass4]
root@vagrant-ubuntu-trusty-64:~# ./systemtap-2.7-19547/bin/stap -v
A script must be specified.
Try '--help' for more information.
root@vagrant-ubuntu-trusty-64:~# ./systemtap-2.7-19547/bin/stap --version
Systemtap translator/driver (version 2.7/0.160, non-git sources)
Copyright (C) 2005-2014 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
enabled features: TR1_UNORDERED_MAP NLS

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
In reply to this post by glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

Frank Ch. Eigler <fche at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fche at redhat dot com

--- Comment #3 from Frank Ch. Eigler <fche at redhat dot com> ---
A gcc internal compiler error is at least a gcc bug (and could also
be a stap bug in terms of C code it generates).  I'll add some info to
the error::pass4 man page to help gather data for the gcc guys, but
it'll go something like

   stap -k --vp 0004 -p4 .....
   cd /var/tmp/stapFOOBAR
   edit Makefile to run gcc -E rather than -c
   send resulting .i (preprocessed input) and CFLAGS to gcc guys

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
In reply to this post by glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

--- Comment #4 from curzonj at gmail dot com ---
Frank,

I couldn't find any place in the Makefile that specified "-c". I did see the -c
in the output of the build process when make ran gcc, so I copied the gcc
command and manually changed the -c to -E and ran it from the kernel headers
directory. The command ran and exited with the same internal error, but I
didn't find any *.i files in my cwd nor in the /tmp/stap* directory. Then I
realized that the -o command may have put the .i contents in the .o file. Then
when I went to submit a gcc bug report, they don't accept new account
registrations which are required to report a bug. Just some problems I ran into
when you write the notes in error::pass4.

Thanks,
Jordan

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
In reply to this post by glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

--- Comment #5 from Frank Ch. Eigler <fche at redhat dot com> ---
This commit adds some man(nroff) goodness as to how to invoke
the preprocessor with less fuss.

https://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=commitdiff;h=52c654ecb6d0178ea413fb102803a7395541fda6

--
You are receiving this mail because:
You are the assignee for the bug.
Reply | Threaded
Open this post in threaded view
|

[Bug translator/18001] Using sysname(), caller(), or callers(n) causes a gcc internal error

glaubitz at physik dot fu-berlin.de
In reply to this post by glaubitz at physik dot fu-berlin.de
https://sourceware.org/bugzilla/show_bug.cgi?id=18001

Frank Ch. Eigler <fche at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |WORKSFORME

--- Comment #6 from Frank Ch. Eigler <fche at redhat dot com> ---
Since commit eead67871, stap -k will also create a preprocessed .i file for use
in diagnosing such problems.

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