public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
From: "dsmith at redhat dot com" <sourceware-bugzilla@sourceware.org>
To: systemtap@sourceware.org
Subject: [Bug runtime/22847] ARM OABI syscall tracing issues
Date: Thu, 15 Feb 2018 16:08:00 -0000	[thread overview]
Message-ID: <bug-22847-6586-1fCqdfXiaP@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-22847-6586@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=22847

--- Comment #4 from David Smith <dsmith at redhat dot com> ---
(In reply to David Smith from comment #3)
> (In reply to Gustavo Moreira from comment #0)
> > The system is an ARMv7 (EABI) but the kernel is compiled with OABI
> > compatibility so that it can execute both ABI binaries. Everything is
> > working, both sort of binaries can be executed on it but SystemTap struggles
> > to trace the OABI syscalls. 
> > For instance, syscalls like "execve" and "exit" are traced but "connect" is
> > completely ignored. Most likely many other syscalls are ignored as well.
> 
> Let's take the example of the "connect" syscall. The connect() system call
> is complicated. On some systems, connect() is implemented via sys_connect().
> On other systems, it is implemented via sys_socketcall() (with $call set to
> SYS_CONNECT). Systemtap tries to catch the syscall on first entry to the
> kernel, and also tries to not give two probe hits on one actual syscall.
> 
> Doing this correctly is a bit complicated (see tapset/linux/sysc_connect.stp
> for all the details). One technique we use is rejecting the call to
> sys_connect() if the syscall number isn't __NR_connect. For your OABI
> binaries, it might be possible that you've got a different __NR_connect for
> each ABI or that systemtap isn't getting the syscall number correctly for
> that ABI.
> 
> You are going to have to debug this a bit to narrow it down. Some questions
> to try to answer:
> 
> 1) Is your connect syscall implemented via sys_connect() or through
> sys_socketcall(), or perhaps through some arch-specific function? Run a test
> binary, set a probe on both sys_connect() and sys_socketcall() and see what
> gets hit. (If you need a test program, look in
> testsuite/systemtap.syscall/connect.c.)

To be clear here, that try the following:

# stap -ve 'probe kernel.function("sys_connect").call,
kernel.function("sys_socketcall").call { printf("%s\n", ppfunc()) }' -c
test_program

> 2) Are you getting the correct syscall number for both ABIs? Run your test
> program (compiled once for each ABI) and see what _stp_syscall_nr() returns.
> Is the number the same for both ABIs?

To be clear here, that try the following:

# stap -ve 'probe kernel.function("sys_connect").call,
kernel.function("sys_socketcall").call { printf("%s - %d\n", ppfunc(),
_stp_syscall_nr()) }' -c test_program

> One more thing. The syscall testsuite should let you know exactly which
> syscalls are not working. To run the tests, do the following:
> 
> # make installcheck RUNTESTFLAGS="systemtap.syscall/*.exp"

I just realized the above really isn't going to help, since the testsuite won't
know that you've got that "extra" ABI and so won't compile for it. That
wouldn't be hard to change, but we'll have to come up with some way for the
testsuite to check for the ABI support.

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

  parent reply	other threads:[~2018-02-15 16:08 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-22847-6586@http.sourceware.org/bugzilla/>
2018-02-15  6:01 ` mysecondaccountabc at gmail dot com
2018-02-15  6:09 ` mysecondaccountabc at gmail dot com
2018-02-15 15:45 ` dsmith at redhat dot com
2018-02-15 16:08 ` dsmith at redhat dot com [this message]
2018-02-16  4:06 ` mysecondaccountabc at gmail dot com
2018-02-19  6:55 ` mysecondaccountabc at gmail dot com
2018-02-19  7:02 ` mysecondaccountabc at gmail dot com
2018-02-19 14:31 ` dsmith at redhat dot com
2018-02-19 22:42 ` mysecondaccountabc at gmail dot com
2018-02-19 22:53 ` dsmith at redhat dot com
2018-02-20  1:05 ` mysecondaccountabc at gmail dot com
2018-02-20 16:03 ` dsmith at redhat dot com
2018-02-22  0:04 ` gmoreira at gmail dot com
2018-02-22 16:58 ` dsmith at redhat dot com
2018-04-18  6:50 ` gmoreira at gmail dot com
2018-04-18  6:52 ` gmoreira at gmail dot com
2018-04-18  7:05 ` gmoreira at gmail dot com
2018-04-18  7:26 ` gmoreira at gmail dot com
2018-04-30 17:16 ` dsmith at redhat dot com
2018-05-01  2:46 ` gmoreira at gmail dot com
2018-05-01 15:11 ` dsmith at redhat dot com
2023-10-06 15:55 ` wcohen at redhat dot com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-22847-6586-1fCqdfXiaP@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=systemtap@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).