ERROR: semop() failed in Java extension: rc -1 errno 22.

Lorsque que SAS utilise java vous pouvez être confronté à l'erreur suivante :
ERROR: semop() failed in Java extension: rc -1 errno 22.
ERROR: The Java child process terminated unexpectedly: status 127.
ERROR: WIFSIGNALED 0 WIFEXITED 0 WEXITSTATUS 0 WTERMSIG 127.
ERROR: Error allocating environment: Unable to load extension: (tkjava)
ERROR: Error in the LIBNAME statement.
Pour déboguer ce problème, vous pouvez utiliser l'option ci-dessous pour activer le mode trace :
options set=TKJNI_OPT_TRACE='y' ;
Puis soumettre une proc javainfo :
proc javainfo all; run ;
ce qui peux donner, par exemple, le résultat suivant :
SAS encoding: ISO8859_15, rc = 0.
Java encoding option: -Dfile.encoding=ISO8859_15.
SAS LOCALE: FRENCH_FRANCE, rc = 0.
Java locale options: -Duser.country=FR -Duser.language=fr.
jecreatjvm skCreateJavaVM: bufL 116 strSize 1 proxyData->dftBufSz 2124
jecreatjvm skCreateJavaVM: extHandle 7fa5580d4a60 argc 16 argv 7fa5580d20a0
bufT 7fa53bdbe490 trace 1 timeout 60 dftBufSz 2124
jecreatjvm initProxy: extHandle 7fa5580d4a60
TKPOSjniipc createIPC_ ipc channel p 0x7fa5580d2180 (sem 0x9e8011 memory
0x158001 m 0x7fa565b82000) bufsz 2124
jecreatjvm initProxy: m->bufsz 2124
jecreatjvm skCreateJavaVM: proxyData m->bufsz 2124
jecreatjvm skCreateJavaVM: m 7fa565b82000 m->flags 81
client: send slot 0x7fa5580d2180 routine 200 len 1008
client: send signals 0x9e8011 state 0
client: send now find 0x9e8011 state 1
client: receiveTO ipcID 0x7fa5580d2180 state 0
client:...rtn 200 rc (jlong)0x0, len 1008
ERROR: The Java proxy is not responding.
jejvm stopProxy p 7fa55809c1e0
jeipc jipcTerm: extHandle 7fa5580d4a60
jeipc jipcTerm: exiting
ERROR: Proc javainfo did not run correctly.
 /mnt/install/SAS/SASHOME/SASFoundation/9.4/utilities/bin/jproxy:
error while loading shared libraries: libjvm.so: cannot open shared object
file: No such file or directory
ERROR: The Java child process terminated unexpectedly: status 127.
ERROR: WIFSIGNALED 0 WIFEXITED 0 WEXITSTATUS 0 WTERMSIG 127.
 jeipc jipcSuspend: extHandle 7fa5580d4a60
 jeipc jipcSuspend: exiting
NOTE: PROCEDURE JAVAINFO used (Total process time):
 real time 1.00 seconds
 cpu time 0.01 seconds
On remarque immédiatement l'erreur :
ERROR: Proc javainfo did not run correctly.
 /mnt/install/SAS/SASHOME/SASFoundation/9.4/utilities/bin/jproxy:
error while loading shared libraries: libjvm.so: cannot open shared object
file: No such file or directory
Dans ce cas, vous pouvez (et devez) vérifier votre variable d'environnement LD_LIBRARY_PATH, en soumettant le code ci-dessous :
%put LD_LIBRARY_PATH: %sysget(LD_LIBRARY_PATH);
et vérifier la présence de la JRE SAS        

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.