[Lazarus] RE : RE :FPC_REQUIRES_PROPER_ALIGNMENTdefinedonSolariscausescrash in lazarus

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Tue Jul 5 15:27:10 CEST 2011


Ludo Brands wrote:
>> With those three patches applied basic operation appears OK, 
>> but I might 
>> now be seeing different behavior on the three systems I'm testing.
>>
>> First, on ARM Linux (Debian "Squeeze") running in the context 
>> of Qemu I 
>> am able to build a non-trivial program (several units, background 
>> thread, database access) which runs successfully. I've not yet tested 
>> debugger access etc.
>>
> 
> Great. 
> 
> Before I forget, I have created a patch for clocale which has been committed
> in svn 17919. Before the patch exceptions where created in functions like
> DateToStr.
> 
>> Second, on SPARC Linux (Debian "Lenny") running on a Sun 
>> Ultra-1 with a 
>> minimal project (button on form -> close) I get this during 
>> "Build All":
>>
>> Compiling project1.lpr
>> Compiling unit1.pas
>> unit1.pas(16,25) Hint: Parameter "Sender" not used
>> Assembling unit1
>> Assembling project1
>> Compiling resource /home/markMLl/lib/sparc-linux/project1.or
>>
>> Program received signal SIGBUS, Bus error.
> 
> This probably indicates an alignment error.
> 
>> [Switching to Thread 0xf7fa5aa0 (LWP 3925)]
>> 0x00686ee8 in TREGEXPR__EMITNODE (OP=6 #6, this=0xf6129660) at 
>> synregexpr.pas:1507
>> 1507         PRENextOff (regcode)^ := 0; // Next "pointer" := nil
> 
> regcode is a PCHAR, PRENextOff is ^PtrInt. So, yes, that is asking for
> non-aligned access? There are several similar constructs in SynRegExpr. That
> is going to be a non-trivial fix, I'm afraid. 
> 
>> gtk2callback.inc:2406 #16 0xf787cb40 in ?? () from 
>> /usr/lib/libglib-2.0.so.0 #17 0xf787cb40 in ?? () from 
>> /usr/lib/libglib-2.0.so.0 Backtrace stopped: previous frame 
>> identical to this frame (corrupt stack?)
>>
>> I don't know what to make of the "corrupt stack" messages 
>> which resemble 
>> something from an older version which had debugging record 
>> errors. They 
>> might be a red herring since lazbuild and generated code are 
>> OK on this 
>> system.
> 
> Perhaps stackframes removed. But there you are already in glib. The lazarus
> routine is triggered by a timer and, if I understand this correctly, you are
> in the routine that is scanning the messages window and puts icons in front
> of the messages. Here it is looking for "Unit x not used in y" messages. You
> can check "Hide Messages Icons" in Tools/IDE Options/Window to get around
> this one, for the time being.
> 
>> Third, on ARM Linux (Debian "Lenny") running natively on an 
>> NSLU2 "Slug" 
>> I appear to get a failure building a program. This is using Lazarus 
>> built on the Qemu system (building natively takes an 
>> unacceptable length 
>> of time), I don't yet have a backtrace etc. on account of 
>> slow operation 
>> on this system (work continues).

Here's what I get running natively on ARM, with a minimal project 
(button on form -> close). As far as possible I've tried to do this 
identically on all systems, i.e. save files with default names in ~ then 
  Build All:

Assembling unit1

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x40c50070 (LWP 2095)]
0x005b0e8c in TREGEXPR__REGNEXT (P=0x4c697f22 <Address 0x4c697f22 out of 
bounds>, this=0x41916ba0)
     at synregexpr.pas:2785
2785      offset := PRENextOff (p + REOpSz)^; //###0.933 inlined NEXT
(gdb) bt
#0  0x005b0e8c in TREGEXPR__REGNEXT (P=0x4c697f22 <Address 0x4c697f22 
out of bounds>, this=0x41916ba0)
     at synregexpr.pas:2785
#1  0x005acfa0 in TREGEXPR__TAIL (P=0x41697f22 #11, VAL=0x41697f4c '', 
this=0x41916ba0) at synregexpr.pas:1471
#2  0x005adc88 in TREGEXPR__PARSEBRANCH (FLAGP=1, this=0x41916ba0) at 
synregexpr.pas:1832
#3  0x005ad8dc in TREGEXPR__PARSEREG (PAREN=0, FLAGP=1, this=0x41916ba0) 
at synregexpr.pas:1756
#4  0x005ad584 in TREGEXPR__COMPILEREGEXPR (EXP=0x41e92ac0 'Unit 
"[a-z_0-9]+" not used in [a-z_0-9]+',
     this=0x41916ba0) at synregexpr.pas:1669
#5  0x005acdb0 in TREGEXPR__COMPILE (this=0x41916ba0) at synregexpr.pas:1423
#6  0x005acee4 in TREGEXPR__ISPROGRAMMOK (this=0x41916ba0) at 
synregexpr.pas:1448
#7  0x005b308c in TREGEXPR__EXECPRIM (AOFFSET=1, this=0x41916ba0) at 
synregexpr.pas:3453
#8  0x005b3050 in TREGEXPR__EXECPOS (AOFFSET=1, this=0x41916ba0) at 
synregexpr.pas:3414
#9  0x006eab60 in SYNREMATCHES (THETEXT=0x42525288 'Assembling unit1',
     REGEXPR=0xcc9ea8 'Unit "[a-z_0-9]+" not used in [a-z_0-9]+', 
MODIFIERSTR=0xc6b824 'I', STARTPOS=1)
     at sourceeditprocs.pas:729
#10 0x004c8720 in REMATCHES (THETEXT=0x42525288 'Assembling unit1',
     REGEXPR=0xcc9ea8 'Unit "[a-z_0-9]+" not used in [a-z_0-9]+', 
MODIFIERSTR=0xc6b824 'I', STARTPOS=1)
     at texttools.pas:121
#11 0x00514ebc in TIDEMSGQUICKFIXITEM__ISAPPLICABLE (LINE=0x41b041e0, 
this=0x41533690) at idemsgintf.pas:450
#12 0x0073ef24 in TMESSAGESVIEW__UPDATEMSGICONS (this=0x41a5a780) at 
msgview.pp:1185
#13 0x0073e2c4 in TMESSAGESVIEW__IDLETIMER1TIMER (SENDER=0x41c87be0, 
this=0x41a5a780) at msgview.pp:957
#14 0x0021a944 in TCUSTOMTIMER__DOONTIMER (this=0x41c87be0) at 
customtimer.pas:181
#15 0x0021a884 in TCUSTOMTIMER__TIMER (this=0x41c87be0) at 
customtimer.pas:156
#16 0x002cb2ac in GTKTIMERCB (DATA=0x4187bfb0) at gtk2callback.inc:2406
#17 0x405e4c04 in ?? () from /usr/lib/libglib-2.0.so.0

There might be others related to UI events, e.g. I think I saw one 
earlier when I switched (KDE) desktops during a build. However at 
present I'm trying to be consistent.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]




More information about the Lazarus mailing list