From: Alexander K. <kri...@fr...> - 2011-11-24 23:07:56
|
I would like to user an exception like "-e trace=!ipc", but that option does not work. It seems to be a bug, but if it is not, please tell me what I am doing wrong. Exceptions for other calls work, but not for ipc - maybe because it is also the name of a category? Alexander Kriegisch |
From: Dmitry V. L. <ld...@al...> - 2011-11-24 23:16:35
|
Hi, On Thu, Nov 24, 2011 at 11:51:19PM +0100, Alexander Kriegisch wrote: > I would like to user an exception like "-e trace=!ipc", but that option does not work. It seems to be a bug, but if it is not, please tell me what I am doing wrong. Exceptions for other calls work, but not for ipc - maybe because it is also the name of a category? $ strace -etrace='ipc' -o '|grep -c ^...ctl >&2' ipcs >/dev/null 6 $ strace -etrace='!ipc' -o '|grep -c ^...ctl >&2' ipcs >/dev/null 0 I suppose you have a problem with quoting '!' in your shell. -- ldv |
From: Alexander K. <kri...@fr...> - 2011-11-25 12:42:05
|
Well, maybe I have wrong expectations, but as I wrote in my original message, I want to exclude "ipc()" calls, not "...ctl()" calls. On the former this setting has no effect. How can I filter them? It is definitely not a quoting problem, otherwise it would not work with other syscall exclusions either, but it does. Using "!ipc" in my case seems to have the effect that everything is dumped unfiltered, while "ipc" does not dump anything. So the setting has an effect, just not on "ipc()" calls. -- Alexander Kriegisch (kriegaex) http://freetz.org Dmitry V. Levin, 25.11.2011 00:16: > On Thu, Nov 24, 2011 at 11:51:19PM +0100, Alexander Kriegisch wrote: >> I would like to user an exception like "-e trace=!ipc", but that >> option does not work. It seems to be a bug, but if it is not, >> please tell me what I am doing wrong. Exceptions for other calls >> work, but not for ipc - maybe because it is also the name of a >> category? > > $ strace -etrace='ipc' -o '|grep -c ^...ctl >&2' ipcs >/dev/null 6 > $ strace -etrace='!ipc' -o '|grep -c ^...ctl >&2' ipcs >/dev/null 0 > > I suppose you have a problem with quoting '!' in your shell. |
From: Dmitry V. L. <ld...@al...> - 2011-11-25 15:43:20
|
On Fri, Nov 25, 2011 at 01:41:54PM +0100, Alexander Kriegisch wrote: > Well, maybe I have wrong expectations, but as I wrote in my original > message, I want to exclude "ipc()" calls, not "...ctl()" calls. On the > former this setting has no effect. How can I filter them? These "...ctl()" calls used by ipcs are definitely ipc calls, aren't they? You can use strace -e trace='!ipc' to hide all IPC related syscalls (shm*, sem* and msg*). > It is definitely not a quoting problem, otherwise it would not work with > other syscall exclusions either, but it does. Using "!ipc" in my case > seems to have the effect that everything is dumped unfiltered, while > "ipc" does not dump anything. So the setting has an effect, just not on > "ipc()" calls. This is not what I see on x86, x86-64 and arm. What's the strace version and architecture you are talking about? > -- > Alexander Kriegisch (kriegaex) > http://freetz.org A: Because it messes up the order in which people normally read text. Q: Why top-posting is considered the most annoying thing in messages? > Dmitry V. Levin, 25.11.2011 00:16: > > On Thu, Nov 24, 2011 at 11:51:19PM +0100, Alexander Kriegisch wrote: > >> I would like to user an exception like "-e trace=!ipc", but that > >> option does not work. It seems to be a bug, but if it is not, > >> please tell me what I am doing wrong. Exceptions for other calls > >> work, but not for ipc - maybe because it is also the name of a > >> category? > > > > $ strace -etrace='ipc' -o '|grep -c ^...ctl >&2' ipcs >/dev/null 6 > > $ strace -etrace='!ipc' -o '|grep -c ^...ctl >&2' ipcs >/dev/null 0 > > > > I suppose you have a problem with quoting '!' in your shell. -- ldv |
From: Alexander K. <kri...@fr...> - 2011-11-25 16:49:15
|
Dear Dmitry, thanks for lecturing me about top-posting. As so many things in life, it is a matter of personal preference and not a generally accepted rule. But I do like to make it more convenient for you, so I am trying to remember not to top-post anymore when conversing with you. > These "...ctl()" calls used by ipcs are definitely ipc calls, > aren't they? If you say so, they are. I know very little about Linux syscalls, as I said. > You can use > strace -e trace='!ipc' > to hide all IPC related syscalls (shm*, sem* and msg*). Thank you very much, but have you read my original question? I want to specifically hide calls like these: > ipc(0x1, 0x8001, 0x1, 0, 0x2abe55cc, 0x2aab25e0) = 0 > ipc(0x1, 0, 0x1, 0, 0x2abe55c4, 0x2aab25e0) = 0 > ipc(0x1, 0x10002, 0x1, 0, 0x2abe55cc, 0x2aab25e0) = 0 > ipc(0x1, 0, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 > ipc(0x1, 0x8001, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 > ipc(0x1, 0, 0x1, 0, 0x2abe55c4, 0x2aab25e0) = 0 > ipc(0x1, 0x10002, 0x1, 0, 0x2abe55d4, 0x2aab2820) = 0 > ipc(0x1, 0, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 They keep cluttering my strace logs. If I try something like strace -e trace='!ipc' -p 17094 -q 2>&1 | grep ipc > ipc.log they still occur in the log in the same order of magnitude as before. > This is not what I see on x86, x86-64 and arm. What's the strace > version and architecture you are talking about? > # uname -a; strace -V > Linux fritz.fonwlan.box 2.6.19.2 #1 Mon Nov 29 14:50:31 CET 2010 mips GNU/Linux > strace -- version 4.6 So we are talking about mipsel here. If I can assist with more info about my system (a DSL and WLAN router called AVM Fritz!Box 7270), please let me know. Kind regards -- Alexander Kriegisch (kriegaex) http://freetz.org |
From: Dmitry V. L. <ld...@al...> - 2011-11-25 18:56:59
|
On Fri, Nov 25, 2011 at 05:49:01PM +0100, Alexander Kriegisch wrote: [...] > > You can use > > strace -e trace='!ipc' > > to hide all IPC related syscalls (shm*, sem* and msg*). > > Thank you very much, but have you read my original question? I want to > specifically hide calls like these: > > > ipc(0x1, 0x8001, 0x1, 0, 0x2abe55cc, 0x2aab25e0) = 0 > > ipc(0x1, 0, 0x1, 0, 0x2abe55c4, 0x2aab25e0) = 0 > > ipc(0x1, 0x10002, 0x1, 0, 0x2abe55cc, 0x2aab25e0) = 0 > > ipc(0x1, 0, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 > > ipc(0x1, 0x8001, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 > > ipc(0x1, 0, 0x1, 0, 0x2abe55c4, 0x2aab25e0) = 0 > > ipc(0x1, 0x10002, 0x1, 0, 0x2abe55d4, 0x2aab2820) = 0 > > ipc(0x1, 0, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 > > They keep cluttering my strace logs. If I try something like > strace -e trace='!ipc' -p 17094 -q 2>&1 | grep ipc > ipc.log > > they still occur in the log in the same order of magnitude as before. This is not the way how it should be. ipc() is not a normal syscall but a syscall multiplexer which strace is usually capable to decode. As I said, there is no visible ipc() on x86, x86-64 and arm. > > This is not what I see on x86, x86-64 and arm. What's the strace > > version and architecture you are talking about? > > > # uname -a; strace -V > > Linux fritz.fonwlan.box 2.6.19.2 #1 Mon Nov 29 14:50:31 CET 2010 mips GNU/Linux > > strace -- version 4.6 > > So we are talking about mipsel here. There is something wrong with strace on your platform, otherwise you would never see this ipc() syscall. I'm not an expert with linux mips zoo, but it looks like ipc() syscall multiplexer is actually in use in your system while strace expects separate IPC syscalls. I can suggest a workaround, but it won't implement proper IPC subcall decoding on your platform unless somebody with better knowledge about it will come up with a patch. The workaround is to teach strace that ipc() is a IPC syscall: $ sed -i '/"ipc"/ s/0,/TI,/' linux/mips/syscallent.h With this change applied, strace -e trace='!ipc' will hide ipc() syscall. -- ldv |
From: Alexander K. <kri...@fr...> - 2011-11-26 12:51:37
|
Sorry, I was not subscribed to the list before, so I am just quoting your previous message from the web archive: >>> ipc(0x1, 0x8001, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 >>> ipc(0x1, 0, 0x1, 0, 0x2abe55c4, 0x2aab25e0) = 0 >>> ipc(0x1, 0x10002, 0x1, 0, 0x2abe55d4, 0x2aab2820) = 0 >>> ipc(0x1, 0, 0x1, 0, 0x2abe55d4, 0x2aab25e0) = 0 >> >> They keep cluttering my strace logs. If I try something like >> strace -e trace='!ipc' -p 17094 -q 2>&1 | grep ipc > ipc.log >> they still occur in the log in the same order of magnitude as >> before. > > This is not the way how it should be. ipc() is not a normal syscall > but a syscall multiplexer which strace is usually capable to decode. > As I said, there is no visible ipc() on x86, x86-64 and arm. > > (...) > > There is something wrong with strace on your platform, otherwise you > would never see this ipc() syscall. I'm not an expert with linux > mips zoo, but it looks like ipc() syscall multiplexer is actually in > use in your system while strace expects separate IPC syscalls. I can > suggest a workaround, but it won't implement proper IPC subcall > decoding on your platform unless somebody with better knowledge about > it will come up with a patch. > > The workaround is to teach strace that ipc() is a IPC syscall: > $ sed -i '/"ipc"/ s/0,/TI,/' linux/mips/syscallent.h > > With this change applied, strace -e trace='!ipc' will hide ipc() syscall. Maybe there is something wrong with strace on my platform, I have no idea and am not the author of the tool. But I can confirm that your latest change http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=commit;h=454dcd458aa0f8ebe6838c1835d779739a9cca77 fixes the problem in my case. May I know if you intend to keep the change in the code base? I mean, is it really just a workaround or does it solve a real problem? I guess it does, because you committed the change for several (all?) platforms. Anyway, thank you for your help, I can filter out ipc() calls now using the "ipc" or "!ipc" category name. :) -- Alexander Kriegisch (kriegaex) http://freetz.org |
From: Dmitry V. L. <ld...@al...> - 2011-11-26 13:58:31
|
On Sat, Nov 26, 2011 at 01:51:28PM +0100, Alexander Kriegisch wrote: > On Fri, Nov 25, 2011 at 10:56:51PM +0400, Dmitry V. Levin wrote: [...] > > There is something wrong with strace on your platform, otherwise you > > would never see this ipc() syscall. I'm not an expert with linux > > mips zoo, but it looks like ipc() syscall multiplexer is actually in > > use in your system while strace expects separate IPC syscalls. I can > > suggest a workaround, but it won't implement proper IPC subcall > > decoding on your platform unless somebody with better knowledge about > > it will come up with a patch. > > > > The workaround is to teach strace that ipc() is a IPC syscall: > > $ sed -i '/"ipc"/ s/0,/TI,/' linux/mips/syscallent.h > > > > With this change applied, strace -e trace='!ipc' will hide ipc() syscall. > > Maybe there is something wrong with strace on my platform, I have no > idea and am not the author of the tool. But I can confirm that your > latest change > http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=commit;h=454dcd458aa0f8ebe6838c1835d779739a9cca77 > fixes the problem in my case. > > May I know if you intend to keep the change in the code base? Yes, I do. > I mean, is > it really just a workaround or does it solve a real problem? I guess it > does, because you committed the change for several (all?) platforms. Assuming that ipc() is a IPC syscall, it is a correct change that fixes your problem. However, strace still lacks IPC subcall decoding on mips, so the change is far from complete. -- ldv |