[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