fpc trunk r26906, cross compiled fpcup for ARMHF; running on Odroid U3 Xubuntu; ran under gdb:
fpcup stops with a SIGSEGV:
...
fpcup: info: Created launcher script for
FPC:/home/odroid/development/fpctrunk/bin/arm-linux/fpc.sh Executing : /home/odroid/development/fpctrunk/compiler/ppc1 "-iV" (working dir: )
2.7.1
Executing : /home/odroid/development/fpctrunk/bin/arm-linux/fpcmkcfg "-h" (working dir: )
Program received signal SIGSEGV, Segmentation fault. 0x00029998 in SYSTEM_$$_PUSHEXCEPTOBJECT$TOBJECT$POINTER$POINTER () (gdb) bt
#0 0x00029998 in SYSTEM_$$_PUSHEXCEPTOBJECT$TOBJECT$POINTER$POINTER () #1 0x00083800 in EXECUTECOMMANDINDIR (
COMMANDLINE=0xb6e6e00c
"/home/odroid/development/fpctrunk/bin/arm-linux/fpcmkcfg -h", DIRECTORY=0x0, OUTPUT=0x0, VERBOSE=true) at processutils.pas:445 #2 0x000836a8 in EXECUTECOMMAND (
COMMANDLINE=0xb6e6e00c
"/home/odroid/development/fpctrunk/bin/arm-linux/fpcmkcfg -h", OUTPUT=0x0, VERBOSE=true) at processutils.pas:431
#3 0x000b92ac in TINSTALLER__CHECKEXECUTABLE (
EXECUTABLE=0xb6e6f22c
"/home/odroid/development/fpctrunk/bin/arm-linux/fpcmkcfg", PARAMETERS=0x160480 "-h", EXPECTOUTPUT=0x16091c "fpcmkcfg", this=<error reading variable>) at installercore.pas:457 #4 0x000c1428 in TFPCINSTALLER__BUILDMODULE (MODULENAME=0xb6fc84ac "FPC", this=<error reading variable>) at installerfpc.pas:1198 #5 0x000d1a54 in TSEQUENCER__DOBUILDMODULE (MODULENAME=0xb6fc84ac "FPC", this=<error reading variable>) at installermanager.pas:624 #6 0x000d4e50 in TSEQUENCER__RUN (SEQUENCENAME=0xb6fccf4c "FPCBuildOnly", this=<error reading variable>) at installermanager.pas:1224 #7 0x000d4ccc in TSEQUENCER__RUN (SEQUENCENAME=0x1662e4 "Only", this=<error reading variable>) at installermanager.pas:1214 #8 0x000d12fc in TFPCUPMANAGER__RUN (this=<error reading variable>) at installermanager.pas:536
#9 0x0000dc24 in main () at fpcup.lpr:802
The executable processutils is trying to execute does not exist. This is not a problem on e.g. Windows/x64 Linux.
What I don't understand: the last line of fpcup output above seems to indicate the code has actually reached the execution part in my code, TProcessEx.Execute.
The TProcessEx.ExecuteCommandInDir call in #1 calls overloaded versions of ExecuteCommandIndir until they end up calling TProcessEx.Execute. Why doesn't that show up in the backtrace?
What does this line mean:
#0 0x00029998 in SYSTEM_$$_PUSHEXCEPTOBJECT$TOBJECT$POINTER$POINTER () ... part of the FPC exception handling code perhaps?
I'm now going to go back to a revision of end January (where I had a working fpcup) to see if that fixes things.
Suggestions/tips welcome.
Thanks,
Reinier
More details:
fpcup revision 416db02e900c
Source:
https://bitbucket.org/reiniero/fpcup/src/?at=processutils_bug_on_armhf
