help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-smalltalk] Fun/Crashes with newer GCC on Debian


From: Paolo Bonzini
Subject: Re: [Help-smalltalk] Fun/Crashes with newer GCC on Debian
Date: Sun, 13 Oct 2013 15:12:45 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9

Il 12/10/2013 19:11, Holger Hans Peter Freyther ha scritto:
> On Sat, Oct 12, 2013 at 06:45:05PM +0200, Paolo Bonzini wrote:
>> Il 11/10/2013 08:08, Holger Hans Peter Freyther ha scritto:
>>> C-code:
>>>
>>> I get asan reports in _gst_grey_oop_range *page = *page;. With
>>> generations off and NO_INCREMENTAL_GC set. Can't this be a NO-OP?
>>
>> This is done to generate a segfault, but only if the page is still
>> unwritable.  It is definitely a false positive.
> 
> Okay, but with NO_SIGSEGV_HANDLING defined we could avoid this. The
> pages are readable/writable anyway so will not generate a segfault
> while read/written?
> 
> diff --git a/libgst/oop.c b/libgst/oop.c
> index c8af8c6..71e837a 100644
> --- a/libgst/oop.c
> +++ b/libgst/oop.c
> @@ -1630,6 +1630,7 @@ tenure_one_object ()
>  void
>  _gst_grey_oop_range (PTR from, size_t size)
>  {
> +#ifndef NO_SIGSEGV_HANDLING
>    volatile char *last, *page;
>  
>    for (last = ((char *)from) + size,
> @@ -1637,6 +1638,7 @@ _gst_grey_oop_range (PTR from, size_t size)
>         page < last;
>         page += getpagesize())
>      *page = *page;
> +#endif
>  }

Yes, that's correct.

Paolo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]