Docker install of PAS 12.1 fails with segmentation fault

Posted by bronco on 03-Feb-2020 12:08

Hi!

I'm trying to create a Docker image with a PAS 12.1 install.

For Java I use AdoptOpenJDK 8u222-b10.

When running proinst I always get an segmentation fault immediatly after running proinst. However, I'm not able to find any meaningful log files.

No matter what image i use (the "FROM") I always get the same. I tried Centos, Ubuntu, adoptopenjdk/openjdk8 to no avail. Did anyone come across this?

thanks

All Replies

Posted by Ruben Dröge on 03-Feb-2020 12:23

Is JAVA in your PATH? Or missing serials? (I do assume you already checked these by the way :))

Posted by Ruben Dröge on 03-Feb-2020 12:26

Shouldn't you know the answer [:O]?

Posted by Ravi Sankar on 03-Feb-2020 12:28

For 12.1 there is already an official docker PASOE image. You can make use of the deploy scripts to perform sidecar deployment from here

Optionally, take a look at the Dockerfile to extend from PASOE base image, if you want to do so.

Posted by bronco on 03-Feb-2020 14:12

Hi Ravi, I'm aware of the existence of the official Docker image. However, since the Dockerfile for that image is not shared, I rather create an image myself (and put that on github.com/.../docker4oe).

In the mean the I'm still curious if anyone can tell me why I get a segmentation fault.

Posted by Akshay Guleria on 05-Feb-2020 14:46

Can you post your DockerFile here? TIP: avoid posting licensing info if there is any in the file.

Posted by svmss on 06-Feb-2020 06:49

Hi Bronco,

Could you please share with us the response.ini and the install log file.

Kind Regards,

Santosh JAMMI.

Posted by bronco on 06-Feb-2020 11:57

Dockerfile:

FROM adoptopenjdk/openjdk8

LABEL maintainer="Bronco Oostermeyer (dev@bfv.io)"

RUN \
  mkdir /install && \
  mkdir /install/openedge
  
# ADD OpenJDK8U-jdk_x64_linux_hotspot_8u242b08.tar.gz /opt/java/openjdk/
ENV PATH=$PATH:/opt/java/openjdk/bin

ADD PROGRESS_OE_12.1_LNX_64.tar.gz /install/openedge

# you need a response.ini from a previous install
COPY response.ini /install/openedge/response.ini
ENV TERM xterm

RUN /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log 

RUN rm -rf /install/openedge && \
  rm -f /usr/dlc/progress.cfg

RUN groupadd -g 1000 pasadmin && \
    useradd -r -u 1000 -g pasadmin pasadmin

ENV DLC=/usr/dlc
ENV WRKDIR=/usr/wrk
ENV PATH=$DLC:$DLC/bin:$PATH

# create directories and files as root
RUN \
  mkdir /app/ && \
  mkdir /app/pas/ && \
  mkdir /app/license/

COPY start.sh /app/pas
COPY dummy.log /app/pas

# turn them over to user pasadmin
RUN chown -R pasadmin:pasadmin /app/
RUN chmod +x /app/pas/start.sh

ENV PROCFG=/app/license/progress.cfg

USER pasadmin

VOLUME /app/license

Posted by bronco on 06-Feb-2020 12:01

response.ini:

;
; DESCRIPTION of Configuration Count
;
;  NumberofConfigurations - the number of products being installed.
;

[Configuration Count]
NumberofConfigurations=1

[Product Configuration 1]
name=PSC
serial=
version=12.1
control=
prodname=Progress ProdAS for OE

;
; DESCRIPTION of Java
;
;  JavaHome - the root directory where the JRE is installed
;

[Java]
JavaHome=/opt/java/openjdk

;
; DESCRIPTION of Type and Destination
;
;  type - identifies the type of installation. Valid values are COMPLETE and CUSTOM.
;  path - identifies the directory in which you install your OpenEdge product software.
;  workpath - identifies the directory in which your applications, databases, and log files will reside.
;  oem_path - identifies the directory in which you install your Management product software.
;  oem_workpath - identifies the directory in which your Management applications, databases, and log files will reside.
;

[Type and Destination]
type=CUSTOM
path=/usr/dlc
workpath=/usr/wrk
oem_path=/usr/oemgmt
oem_workpath=/usr/wrk_oemgmt

;
; DESCRIPTION of Language Default
;
;  DefaultLanguage - identifies the language in which PROMSGS appears by default.
;    -Valid values are:
;      Czech
;      Dutch
;      English - American
;      English - International
;      French
;      German
;      Italian
;      Polish
;      Portuguese
;      Portuguese - Brazilian
;      Spanish
;      Spanish - Latin
;      Swedish
;

[Language Default]
DefaultLanguage=English - American

;
; DESCRIPTION of Language Choice
;
;  lang1, lang2, lang3 ... - Identifies all the PROMSGS languages installed during installation including the default language.
;

[Language Choice]
lang1=English - American

;
; DESCRIPTION of International Settings
;
;   NOTE: For specific information please refer to the intlsets.txt file located at the root level of the cdrom from which this information is derived.
;   cpinternal - identifies the -cpinternal and -cpstream values included in the startup.pf file.
;   cpcollation - identifies the -cpcoll value included in the startup.pf file.
;   cpcase - identifies the -cpcase value included in the startup.pf file.
;   dateformat - identifies the -d value included in the startup.pf file.
;   numsep - identifies the -numsep value included in the startup.pf file.
;   numdec - identifies the -numdec value included in the startup.pf file.
;
;   The following is a table of the numbers and the separators they represent:
;   32  - space
;   36  - dollar
;   39  - apostrophe
;   44  - comma
;   46  - period
;

[International Settings]
cpinternal=UTF-8
cpcollation=Basic
cpcase=Basic
dateformat=dmy
numsep=46
numdec=44
;
; DESCRIPTION of PacificAppServerPortDetails
;
;  nPortHttp - A port for HTTP connections.
;  nPortHttps - A port for HTTPS connections.
;  nPortShutdown - Port on which the shutdown process will run.
;

[PacificAppServerPortDetails]
nPortHttp=8810
nPortHttps=8811
nPortShutdown=8812

Posted by bronco on 06-Feb-2020 12:02

start.sh:

#!/bin/bash

logfile=/app/pas/as/logs/as-pas.agent.log
touch $logfile

/app/pas/as/bin/tcman.sh start -v

tail -f $logfile

Posted by Ravi Sankar on 07-Feb-2020 06:07

FROM should be Centos:7.3 or later.

Since you also need JDK, you need to use multi stage build. https://docs.docker.com/develop/develop-images/multistage-build/

An example of it is there in extending PASOE documentation at https://docs.progress.com/bundle/pas-for-openedge-docker/page/Deploy-using-the-standalone-Docker-image.html

FROM <JDK Docker image name>:<JDK Docker image tag> as builder-jdk

FROM store/progresssoftware/pasoe:12.1.0

USER pscadmin

COPY --chown=pscadmin:pscadmin <Path of the license file> /psc/dlc/progress.cfg

COPY --from=builder-jdk --chown=pscadmin:pscadmin <Java location inside the JDK Docker image> /usr/java

...

Posted by bronco on 10-Feb-2020 15:38

Thank you Ravi. I still feel that the install (proinst) shouldn't fail as it currently does:

Step 7/20 : RUN /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log

---> Running in 6dfe2cc424af

/install/openedge/proinst: line 102:    24 Segmentation fault      $mountdir/_ovrly $mountdir $option1 $option2 $option3 $option4 $option5

Cleaning up temporary files...

The command '/bin/sh -c /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log' returned a non-zero code: 139

This after creating a Centos/OpenJDK image first and build from there on....

Posted by Ravi Sankar on 11-Feb-2020 07:05

Is your issue resolved or are you still facing the Segmentation fault? If the issue still exists, could you share the install_oe.log ?

Posted by bronco on 11-Feb-2020 08:08

See earlier mentioned Dockerfile, I commented the RUN /..../proinst and everything beneath. I build and start the image and run proinst from a bash shell from the command line.

CLI:

[root@7f21a2425825 /]# /install/openedge/proinst -b /install/openedge/response.ini -l /install/install_oe.log
/install/openedge/proinst: line 102: 33 Segmentation fault $mountdir/_ovrly $mountdir $option1 $option2 $option3 $option4 $option5
Cleaning up temporary files...

 

/install/install_oe.log:

OPENEDGE INSTALL UTILITY LOG <VERSION 12.1> (Tue Feb 11 08:01:34 2020)
[Application]
Name=OpenEdge
Version=12.1
Company=PSC

[ResponseResult]
ResultCode=
ResultDescription=


[DetectPreviousInstallSettings]
Information=[02-11-2020 08:01:34] Unable to locate file /etc/progress.
OPENEDGE INSTALL UTILITY LOG <VERSION 12.1> (Tue Feb 11 08:01:34 2020)
The JavaHome path provided: /opt/java/openjdk

Posted by svmss on 11-Feb-2020 10:05

Hi Bronco,

At the mentioned place, where the error is thrown:

$mountdir/_ovrly $mountdir $option1 $option2 $option3 $option4 $option5

The mountdir is the directory where you have launched the installer from. It executes the _ovrly file that temporarily gets copied to the PWD which is the main file to launch the installer.

I would request you to set ulimit -c unlimited so when a segmentation fault occurs, a core is dumped. You can send us the core file so that we can see the problem.

Kind Regards,

Santosh JAMMI.

Posted by bronco on 11-Feb-2020 10:57

Hello Santosh,

Here's the link to the core dump: 1drv.ms/.../s!AusuzFLH7JWPh9QLYijZx10FX7JDNQ

Posted by bronco on 25-Feb-2020 14:39

Did the core dump bring any lightto this?.

Posted by svmss on 02-Mar-2020 07:12

The crash is happening when it tries to output the install progress. I will be investigating this further.

This thread is closed