Bill Allombert on Sat, 17 May 2003 12:23:29 +0200


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

Re: [Cygwin] MPQS broken


On Thu, May 15, 2003 at 04:53:38PM +0200, Karim BELABAS wrote:
> Hi,
> 
>   I have just received a bug report that MPQS is completely broken under
> Cygwin, at least compiled with gcc-3.2 (that's my XP binary, as available
> in parigp-home.de's download area :-(). I can reproduce it on our Windows
> box (XP), and of course nowhere else.
> 
> Any invocation of mpqs(), e.g as in
> 
>   factor(2^(2^7) + 1)
> 
> causes a SEGV in mpqs.c:mpqs_mergesort_lp_file0(), more precisely in the first
> fgets() [ line 400 ], within memcpy() in cygwin1.dll.
> 
> This only occurs with -fomit-frame-pointer, at -O2 or higher so it doesn't
> look like cygwin1.dll is to blame. It's independant of GCC_INLINE and works
> flawlessly at -O1, or without -fomit-frame-pointer.
> 
> I have absolutely no clue as to what could cause the bug. Just in case,
> I have extended the size of some static arrays, e.g
> 
>   line[MPQS_STRING_LENGTH] --> line[MPQS_STRING_LENGTH + 1024]
> 
> to no avail. At least the bug doesn't go away when I add printf calls
> around.
> 
> Any idea ???

Try to upgrade gcc-3.2 to 3.2.3, it fix several optimiser bugs.
Alternatively drop '-fomit-frame-pointer' on Windows, this is
always a troublesome optimization.

Cheers,
Bill.