io_submit with silly values/pointers

Denys Vlasenko dvlasenk at redhat.com
Mon Nov 11 11:30:28 UTC 2013


On 11/08/2013 09:10 PM, Dr. David Alan Gilbert wrote:
> * Denys Vlasenko (dvlasenk at redhat.com) wrote:
>> On 11/06/2013 08:55 PM, Dr. David Alan Gilbert wrote:
>>> Hi,
>>>   'trinity' generated an io_submit call with a ludicrous large
>>> 'nr' of requests, the result being strace sat there just printing out
>>> {...}, for nearly ever since the data didn't exist.
>>>
>>>   Is the right thing to 'break' rather than 'continue' if either
>>> of the umove calls fail?     The alternative way is to break 
>>> if the iocbs read fails but allow individualy broken iocb reads.
>>> I'm not sure which is more sane - you could have a real call
>>> that fails for another reason before hitting the bad iocb.
>>
>> Please try attached patch.
> 
> Thanks, hmm it's surviving but I'm not sure it's giving the
> expected output in all cases; most of them look believable, but:
> 
> 5347  io_submit(18446744073709551615, 127, {0xffffffff81000000}) = -1 EFAULT (Bad address)
> 
> What's happened to that one - my reading of your patch would be that it
> would print an address without the {}'s if it failed on the iocbs read,
> so why is there only one entry?

It *is* failure to read iocbs[0]. Success (with subsequent failure
to read iocbs[0][0]) would look like this:

io_submit(18446744073709551615, 127, {{0xffffffsomehex}, ... })





More information about the Strace-devel mailing list