|
From: Bart V. A. <bva...@ac...> - 2010-09-07 11:04:23
|
On Tue, Sep 7, 2010 at 12:59 PM, Christian Borntraeger
<bor...@de...> wrote:
> Am 02.09.2010 16:50, schrieb sv...@va...:
>> Author: bart
>> Date: 2010-09-02 15:50:41 +0100 (Thu, 02 Sep 2010)
>> New Revision: 11329
>>
>> Log:
>> Made sure that DRD processes client programs that use SA_ONSTACK
>> correctly (e.g. Wine).
>>
>>
>> Modified:
>> trunk/drd/drd_main.c
>>
>>
>> Modified: trunk/drd/drd_main.c
>> ===================================================================
>> --- trunk/drd/drd_main.c 2010-09-02 14:44:17 UTC (rev 11328)
>> +++ trunk/drd/drd_main.c 2010-09-02 14:50:41 UTC (rev 11329)
>> @@ -326,9 +326,6 @@
>> {
>> const Addr a2 = a1 + len;
>>
>> - if (len == 0)
>> - return;
>> -
>> tl_assert(a1 < a2);
>>
>> if (UNLIKELY(DRD_(any_address_is_traced)()))
>
> Bart,
>
> this basically removes r11304. Was this an oversight?
> len=0 can really happen in real code,e.g. on startup
> if the stack pointer is exactly on a page boundary
> and valgrind_main does initial stack permissions.
> (client_SP == seg->start)
The above commit indeed removes r11304. Revision 11304 was committed
too early - it was committed while I was searching for the cause of an
assertion failure triggered by a signal handler that was invoked on an
alternate stack.
None of the callers of the modified function should invoke it with len == 0.
Bart.
|