From: Philippe W. <phi...@sk...> - 2012-08-18 12:15:50
|
On Fri, 2012-08-17 at 12:29 -0700, John Reiser wrote: > > http://pastebin.com/n60pN1LL > > The line > > SYSCALL[11763,1]( 0) sys_read ( 4, 0x90b2e34, 38346752 ) > > appears many many times. A read() of 38MB is done over and over and over again. > That's expensive. A read()-from-a-device is a write-to-memory, > so memcheck must mark those 38MB as valid, over and over and over again. I am not sure the read syscall is successful. here are some succesful read: SYSCALL[11763,1]( 0) sys_read ( 4, 0x7fee9a740, 1458176 ) --> [async] ... SYSCALL[11763,1]( 0) ... [async] --> Success(0x0:0x164000) but then a bunch of lines like: SYSCALL[11763,1]( 0) sys_read ( 4, 0x90b2e34, 38346752 ) --> [async] ... SYSCALL[11763,1]( 15) sys_rt_sigreturn ( ) --> [pre-success] NoWriteResult without indication of successful result. It is not very clear to what is happening. If you run the same thing with 3.8.0, when it hangs, you might take a look with vgdb at what your application is doing, either from the command line: vgdb v.info scheduler or in gdb: gdb target remote | vgdb ... and then backtrace and similar Alternatively, using -v -v -v -d -d -d --trace-syscalls=yes --trace-signals=yes might give some more lights. Philippe Philippe |