This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Improve build-id checking when the task we're interested in isn't 'current'. git commit causing problems on ARM and IA64


On 03/30/2012 04:15 PM, William Cohen wrote:

> When running tests I found the following patch causing problems on ARM and IA64 machines
> 
> http://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=commitdiff;h=c0456b6fda16307070e0896d3cca86f523214a5e;hp=ca73974d84f94065dbabce2a2044d17a83bade57
> 
> On ARM with a really simple example end up with:
> 
> $ ../install/bin/stap  -k ../systemtap/testsuite/systemtap.base/add.stp 
> WARNING: "copy_to_user_page" [/tmp/stapgL32Wo/stap_7644.ko] undefined!
> Error inserting module '/tmp/stapgL32Wo/stap_7644.ko': Unknown symbol in module
> WARNING: /media/greatplains/wcohen/systemtap_write/install/bin/staprun exited with status: 1
> Pass 5: run failed.  Try again with another '--vp 00001' option.
> Keeping temporary directory "/tmp/stapgL32Wo"

>

> 
> On IA64 same example ends up with:
> 
> $ ../install/bin/stap  -k ../systemtap/testsuite/systemtap.base/add.stp 
> WARNING: "flush_icache_range" [/tmp/staprfDqn5/stap_29610.ko] undefined!
> Error inserting module '/tmp/staprfDqn5/stap_29610.ko': Unknown symbol in module
> WARNING: /home/wcohen/systemtap_write/install/bin/staprun exited with status: 1
> Pass 5: run failed.  Try again with another '--vp 00001' option.
> Keeping temporary directory "/tmp/staprfDqn5"
> 
> 
> It looks like the reordering of the includes is causing a problem on these machines.
> 
> -Will


This is fixed for IA64 in commit 414b89b.  It might fix ARM also, but I
don't have access to an ARM machine, so you'll have to test that one.

Long story short, it wasn't a problem with includes, but with some new
code.  New code in sym.c/vma.c was calling __access_process_vm() in
certain situations.  The __access_process_vm() function ends up calling
flush_icache_range() (__access_process_vm() calls copy_to_user_page(),
which calls flush_icache_user_range(), which calls
flush_icache_range()), which isn't exported.

I fixed the problem by ifdef'ing out the __access_process_vm() call when
we've got in-kernel utrace.

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]