Julian Seward <[email protected]> writes:
>> My guess would be that stat64 is not marked as a system call that can
>> block and that it needs the MayBlock flag adding.
>
> Yes, that could be it.  I guess, normally, a stat64 (etc) call is
> completed eventually by the kernel, without the need for any other
> thread to run.  But in this case a stat64 call might somehow require
> some other thread to progress.  
>
> Nikolaus, try adding
>
>   *flags |= SfMayBlock;
>
> to PRE(sys_stat64) in syswrap-x86-linux.c (I assume this is
> 32-bit x86).  Does that help?


No, I'm afraid it's still blocking in the same call.

Did I make the change correctly? The file
coregrind/m_syswrap/syswrap-x86-linux.c now looks like this:

PRE(sys_stat64)
{
   *flags |= SfMayBlock;
   PRINT("sys_stat64 ( %#lx(%s), %#lx )",ARG1,(char*)ARG1,ARG2);
   PRE_REG_READ2(long, "stat64", char *, file_name, struct stat64 *, buf);
   PRE_MEM_RASCIIZ( "stat64(file_name)", ARG1 );
   PRE_MEM_WRITE( "stat64(buf)", ARG2, sizeof(struct vki_stat64) );
}



Best,


   -Nikolaus

-- 
 »Time flies like an arrow, fruit flies like a Banana.«

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to 
best implement a security strategy that keeps consumers' information secure 
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl 
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to