From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5141 invoked by alias); 14 Dec 2009 12:31:06 -0000 Received: (qmail 4631 invoked by uid 48); 14 Dec 2009 12:30:44 -0000 Date: Mon, 14 Dec 2009 12:31:00 -0000 From: "mjw at redhat dot com" To: systemtap@sources.redhat.com Message-ID: <20091214123044.11089.mjw@redhat.com> Reply-To: sourceware-bugzilla@sourceware.org Subject: [Bug translator/11089] New: process.mark() probes with same name trigger wrongly X-Bugzilla-Reason: AssignedTo Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2009-q4/txt/msg00898.txt.bz2 When a process.mark() probe is in the .probes section multiple times with different addresses it looks like only one address is being triggered for a probe on the mark() for that name (and it is triggered multiple times for that one address). One example is the cxxclass.exp test on i386: > $ stap ./systemtap.base/cxxclass.stp cxxclass.exe -c ./cxxclass.exe > main_enter > call: 64 > cons call: 64 > cons call: 64 > meth call: 64 24 > meth call: 64 24 > dest call: 42 > dest call: 42 > call2: 24 > main_exit > > Seems there is double call on process.mark. The issue seems to be that some of the static probe points get duplicated in the code. This shouldn't be a problem, and the .probes section does contain both places with different addresses. You can also see (with enough -vvvvv) that stap finds both locations while resolving the mark("cons") probe. But, only the first is registered twice, as can be seen in the generated code: { .address=(unsigned long)0x8048476ULL, .pp="process(\"/home/mark/src/systemtap/testsuite/cxxclass.exe\").statement(134513782)", .ph=&probe_1895, }, { .address=(unsigned long)0x8048476ULL, .pp="process(\"/home/mark/src/systemtap/testsuite/cxxclass.exe\").statement(134513782)", .ph=&probe_1895, }, This means the first call of the constructor is triggered as probe twice (as is the method, and destructor call) but the second call isn't triggered as probe at all. It looks like this is a problem in how sdt_query::convert_location() is called (it seems to do duplication detection based on probe name, but not address. I haven't looked very deeply into it yet though. -- Summary: process.mark() probes with same name trigger wrongly Product: systemtap Version: unspecified Status: NEW Severity: normal Priority: P2 Component: translator AssignedTo: systemtap at sources dot redhat dot com ReportedBy: mjw at redhat dot com http://sourceware.org/bugzilla/show_bug.cgi?id=11089 ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.