Thanks for your explanation and quick response, however with
-Uusemymalloc it segfaults almost when it starts. At least it showed
that the problem comes from that way, probably the mymalloc is worse
than  the OpenBSD one. :P

We found what appears to be a workaround on awstats.
Changing $tokenquery=$1||''; to $tokenquery='?'; after we traced what
was awstats running when segfaulting.
It's on awstats.pl line 6574
----- awstats 6.7 (build 1.892) (c) 2000-2007 Laurent Destailleur -----

It runs perfect and we didnt find any problem, but we don't have a clue
as to why that is... We are still looking for a real solution

Thanks again,
Alejandro.

mickey wrote:
> On Thu, Sep 13, 2007 at 05:25:32PM -0300, Alejandro Lozanoff wrote:
>   
>> Hello list,
>>     
>
> re
>
>   
>> We recently updated a 3.7 machine running awstat(perl) to parse all our
>> websites logs with the biggest being around 1GB.
>> When parsing the big log it randomly segfaults on 4.1, 3.9 and 3.8, we
>> tried new clean release installs and it still segfaults. On 3.7 it works
>> flawlessly, on 3.8 which has the same perl version as 3.7 (5.8.6) it
>> still segfaults. The problem is completely random but it tends to happen
>> after its been running for a while as it doesnt happen on small logs (or
>> the probability for it to happen on those files is too low )
>>
>> As the trace below (from the perl.core) shows, it's an out of bounds
>> problem, then we remember about a change on 3.8:
>>
>> "malloc(3) has been rewritten to use the mmap(2) system call,
>> introducing unpredictable allocation addresses and guard pages, which
>> helps in detecting heap based buffer overflows and prevents various
>> types of attacks."
>>     
>
> yes. this increases memory fragmentation immensly resulting
> in (practically) less virtual space available for data.
> as an increased penalty (200-300%) for cpu consuption
> on processes w/ lots (20M and more) malloc(3)ed memory...
> as well increased demand for the physical memory that
> on the overcommiting nature of it you perhaps observe.
> a way around it is only to use perl malloc (sbrk-based)
>
> cu

Reply via email to