[Bug 941] faxgetty received signal SEGV

[email protected] Wed, 14 Mar 2012 08:13:09 -0400
Newsgroups gmane.comp.telephony.fax.hylafax.devel
Message-ID <[email protected]>
http://bugs.hylafax.org/show_bug.cgi?id=941


[email protected] changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|faxgetty received signal    |faxgetty received signal
                   |SIGINT                      |SEGV




------- Comment #9 from [email protected]  2012-03-14 08:13 -------
I'ld forgotten about this bug...

We chased this down once for a client who was building from HylaFAX source.

And my conclusion was that it's likely a compiler bug.

I don't have all my paper notes around anymore for this one, but I'll try and
describe our conclusions. You might be able to get a compiler guru from debian
to help you decipher dis-assemblies, and maybe point a finger more specificall.

Short, though, as a work around, compile with a different optimization (-O)
flag, and it works.

Bug specifics, it's actually in the compiled version of recvPageDLEData(..). 
If you look at the trace, you'll see that "this" changes between frame #1 and
#2.

I can't remember which function, but directly after a call to one of the
functions, it has an instruction to store one of the registers to the memory
location of "this" (corrupting it).  The function itself continues to run,
because it uses a "local" copy of the this pointer for it's operations, not the
original it just corrupted.


The problem code was only seen in disassemblies from GCC 4.4.3, with -O2 (I
think).

a.


-- 
Configure bugmail: http://bugs.hylafax.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


____________________ HylaFAX(tm) Developers Mailing List ____________________
  To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi
On UNIX: mail -s unsubscribe [email protected] < /dev/null