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