Recent

Author Topic: existing system, now raises: ppcx64 can't be executed, error message: -11  (Read 4180 times)

ozznixon

  • Full Member
  • ***
  • Posts: 119
    • http://www.modernpascal.com/
# /usr/bin/ppcx64
Free Pascal Compiler version 2.6.4 [2014/03/07] for x86_64

* not aware of any yum updates or anything... but, now I get:
 :o
./buildproduction
Free Pascal Compiler version 2.6.4 [2014/03/07] for x86_64
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling modernpascal.pp
Compiling _parser.pas
Compiling _types.pas
Compiling _exceptions.pas
Compiling _compiler.pas
Compiling _vartypes.pas
Compiling _emitter.pas
Compiling _interpreter.pas
Compiling _compiler.pas
Compiling _vartypes.pas
Compiling _emitter.pas
Compiling _vartypes2.pas
Compiling _eval.pas
Compiling _vartypes3.pas
Compiling _astree.pas
Compiling _vartypes4.pas
Compiling _vartypes3.pas
Compiling /source/bpdx/dxutil_environment.pas
Compiling /source/bpdx/dxutil_common.pas
Compiling /source/bpdx/dxutil_numeric.pas
Compiling /source/bpdx/dxutil_string.pas
Error: /usr/bin/ppcx64 can't be executed, error message: Failed to execute "/usr/bin/ppcx64", error code: -11  :-[

dxutil* source has not been changed in over a decade. I manually dropped all *.ppu and *.o files and forced with a -B, still same error same file. Skimmed dxutil_string.pas - nothing appears corrupt. 8-)
---
Want to kick the tires to a Free Pascal like script engine? http://www.ModernPascal.com/

Thaddy

  • Hero Member
  • *****
  • Posts: 14213
  • Probably until I exterminate Putin.
chmod +x /usr/bin/ppcx64 maybe?

It can also be that that is a symlink and ppcx64 is simply missing in /usr/lib/fpc/<what version?> or /usr/local/lib/fpc/<what version?> (version is 3.0.0, 3.0.2 or something)

Because on most nixes that is the real place where the ppcx64 executable is installed and /usr/bin or /usr/local/bin contains a symlink. If the package was built properly or you installed correctly.
« Last Edit: May 22, 2017, 08:49:58 pm by Thaddy »
Specialize a type, not a var.

ozznixon

  • Full Member
  • ***
  • Posts: 119
    • http://www.modernpascal.com/
Thanks @Thaddy, however as said - this is an existing system (e.g. 2.6.4 has been on it since last year) - this is a production build server, I copy source changes to modernpascal (my free pascal interpreter), and run build to deploy to my web servers. I made a change to my process locking code (3 lines) and now cannot deploy the update to my users.

* Code change was rolled back, still same problem.

# whereis ppcx64
/usr/bin/ppcx64

# ls -alrt /usr/bin/ppcx64
lrwxrwxrwx 1 root root 27 Feb 22  2016 /usr/bin/ppcx64 -> /usr/lib64/fpc/2.6.4/ppcx64

# ls -alrt /usr/lib64/fpc/2.6.4/ppcx64
-rwxr-xr-x 1 root root 2869176 Mar  7  2014 /usr/lib64/fpc/2.6.4/ppcx64

*** anyone know what the -11 error code means, or where to find the error numbers for ppc itself?

THANKS!
---
Want to kick the tires to a Free Pascal like script engine? http://www.ModernPascal.com/

Jonas Maebe

  • Hero Member
  • *****
  • Posts: 1058
I guess it's signal 11, which is a segmentation violation. It means the compiler binary has crashed.

ozznixon

  • Full Member
  • ***
  • Posts: 119
    • http://www.modernpascal.com/
found the code which is causing it. rolled back 1 more version of changes, and viola everything works.

so tracking through the code, it is in an include file, the method looks something like:

procedure doGlobalLock; inline;
{$ifdef unix}
label tryagain;
{$endif}

begin
{$ifdef unix}
tryagain:
   if {I can lock then globallocksemaphore}
   else begin
      {sleep 10ms}
      goto tryagain;
   end;
{$endif}
   doCrossThreadLocking;
end;

-- the goto tryagain raises the -11 error.
---
Want to kick the tires to a Free Pascal like script engine? http://www.ModernPascal.com/

Jonas Maebe

  • Hero Member
  • *****
  • Posts: 1058
The problem is the "goto" in an inline routine. IIRC that was fixed in 3.0.

ozznixon

  • Full Member
  • ***
  • Posts: 119
    • http://www.modernpascal.com/
so tracking through the code, it is in an include file, the method looks something like:

procedure doGlobalLock; inline;
{$ifdef unix}
label tryagain;
{$endif}

So, I am not sure if it is the goto inside an inline? if I comment the goto call, all works, so I recoded to be a while true loop, just break out on success instead of goto tryagain on fail.

Thanks @jonas (saw your post after I posted this)...
« Last Edit: May 22, 2017, 11:03:54 pm by ozznixon »
---
Want to kick the tires to a Free Pascal like script engine? http://www.ModernPascal.com/

 

TinyPortal © 2005-2018