Troubleshooting SAP ABAP Gagal Startup: Indikasi CommonCryptoLib dan CPU Feature Detection
Pendahuluan
Artikel ini membahas troubleshooting sebuah kasus SAP NetWeaver AS ABAP di Linux yang mengalami kegagalan startup.
Gejala awal terlihat seperti sapstartsrv mengalami timeout saat menjalankan startsap. Setelah dilakukan troubleshooting lebih lanjut, ditemukan indikasi yang mengarah ke SAP CommonCryptoLib (libsapcrypto.so), khususnya pada proses CPU feature detection dan initialization.
Disclaimer: Seluruh hostname, SID, nama instance, username, dan path environment pada artikel ini telah disamarkan. Artikel ini dibuat sebagai dokumentasi troubleshooting dan bukan pengganti SAP Note atau rekomendasi resmi SAP.
1. Gejala Awal
Saat startup SAP dijalankan:
startsap
muncul:
Checking db6 Database
Database is running
-------------------------------------------
Starting Startup Agent sapstartsrv
FAIL: Timeout
Startup of Instance Service failed
See /home/<user>/startsap_<INSTANCE>.log for details
Log startup juga menunjukkan:
Starting Startup Agent sapstartsrv
Startup of Instance Service failed
Pada tahap ini, indikasi awal terlihat seperti sapstartsrv gagal dijalankan.
2. Memastikan sapstartsrv Berjalan
Daripada langsung menyimpulkan bahwa sapstartsrv mati, proses diperiksa:
ps -ef | grep -E 'sapstartsrv|sapstart|<INSTANCE>' | grep -v grep
Ditemukan proses:
<SAP_ADMIN> ... /usr/sap/<SID>/<ASCS_INSTANCE>/exe/sapstartsrv \
pf=/usr/sap/<SID>/SYS/profile/START_<INSTANCE>_<HOST> -D
Kemudian port diperiksa:
netstat -lntp | grep -E ':5[0-9]{4}|sapstartsrv'
Artinya:
sapstartsrvsebenarnya sudah running meskipunstartsapsebelumnya melaporkan timeout.
3. Menguji sapcontrol Secara Lokal
Untuk memastikan komunikasi dengan sapstartsrv, digunakan:
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/sapcontrol \
-host 127.0.0.1 \
-nr <NR> \
-function GetProcessList
Hasil:
OK
name, description, dispstatus, textstatus, starttime, elapsedtime, pid
msg_server, MessageServer, GRAY, Stopped, , , <PID>
enserver, EnqueueServer, GRAY, Stopped, , , <PID>
Ini membuktikan bahwa:
sapcontrol
|
v
sapstartsrv
dapat berkomunikasi dengan normal.
Jadi masalahnya bukan karena sapcontrol membutuhkan SAP Router.
4. Apakah SAP Router Dibutuhkan?
Untuk command lokal seperti:
sapcontrol -host 127.0.0.1 ...
SAP Router tidak diperlukan.
Komunikasinya terjadi secara langsung dengan sapstartsrv pada host SAP.
Secara sederhana:
sapcontrol
|
| Local connection
v
sapstartsrv
|
+-- Message Server
|
+-- Enqueue Server
5. Instance Berhasil Dijalankan dengan sapcontrol
Instance kemudian dicoba dijalankan secara langsung:
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/sapcontrol \
-host 127.0.0.1 \
-nr <NR> \
-function Start
Response:
Start
OK
Kemudian status diperiksa:
sapcontrol \
-host 127.0.0.1 \
-nr <NR> \
-function GetProcessList
Hasil:
msg_server, MessageServer, GREEN, Running
enserver, EnqueueServer, GREEN, Running
Ini menjadi temuan penting:
SAP instance sebenarnya dapat dijalankan melalui
sapcontrol, sementara mekanismestartsapsebelumnya mengalami timeout.
6. Investigasi CommonCryptoLib
Selanjutnya dilakukan pemeriksaan terhadap SAP CommonCryptoLib.
File yang relevan:
libsapcrypto.so
libslcryptokernel.so
Informasi library dapat diperiksa menggunakan:
sapgenpse cryptinfo
Pada library yang digunakan instance ditemukan informasi seperti:
API-VERSION = 1
VERSION = 8.4.41
FILE-VERSION = 8.4.41.0
SELFTEST = OK
CPU-FEATURES-SUPPORTED = AES-NI,CLMUL,SSE3,SSSE3,SHAEXT
CPU-FEATURES-ACTIVE = AES-NI,CLMUL,SSE3,SSSE3,SHAEXT
Yang menjadi perhatian adalah:
SHAEXT
termasuk dalam CPU feature yang dideteksi dan diaktifkan.
7. Ditemukan CommonCryptoLib Versi Lain
Pada server terdapat CommonCryptoLib lain yang digunakan oleh SAP Host Agent.
Misalnya:
/usr/sap/hostctrl/exe/libsapcrypto.so
Ketika diperiksa:
/usr/sap/hostctrl/exe/sapgenpse cryptinfo
hasilnya:
API-VERSION = 2
VERSION = 8.4.47
FILE-VERSION = 8.4.47.0
SELFTEST = OK
CPU-FEATURES-SUPPORTED = AES-NI,CLMUL,SSE3,SSSE3
CPU-FEATURES-ACTIVE = AES-NI,CLMUL,SSE3,SSSE3
Perbedaan yang menarik:
Instance CCL:
AES-NI, CLMUL, SSE3, SSSE3, SHAEXT
Host Agent CCL:
AES-NI, CLMUL, SSE3, SSSE3
Pada library Host Agent, SHAEXT tidak muncul sebagai active CPU feature.
8. Memastikan Binary Berbeda
Untuk memastikan library bukan file yang sama, checksum dibandingkan:
sha256sum \
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/libsapcrypto.so \
/usr/sap/<SID>/<APP_INSTANCE>/exe/libsapcrypto.so \
/sapmnt/<SID>/exe/libsapcrypto.so
Ketiga library instance memiliki checksum yang sama.
Namun ketika dibandingkan dengan Host Agent:
sha256sum \
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/libsapcrypto.so \
/usr/sap/hostctrl/exe/libsapcrypto.so
checksum berbeda.
Jadi terdapat dua versi/binary CommonCryptoLib yang berbeda pada environment tersebut.
9. Pemeriksaan CPU Feature di Dalam Binary
Binary CommonCryptoLib kemudian diperiksa menggunakan:
strings libsapcrypto.so | \
grep -i -E 'disable|force|cpu|feature|shaext'
Ditemukan beberapa symbol/string seperti:
CPU-FEATURES-SUPPORTED
CPU-FEATURES-ACTIVE
CPU_SUPPORTS_X86_SHAEXT
X86_64_SHAEXT_SHA1Transform
X86_64_SHAEXT_SHA256Transform
X86_64_CheckCPUFeatures
X86_64_EnableCPUFeatures
cpu_features_supported
cpu_features_active
- mendeteksi CPU;
- menentukan CPU feature yang didukung;
- menentukan CPU feature yang aktif;
- mengaktifkan CPU feature;
- menggunakan implementation SHAEXT.
10. Eksperimen Menggunakan GDB
Untuk mengetahui apakah fungsi CPU feature benar-benar dipanggil saat initialization, dilakukan tracing menggunakan GDB.
Breakpoint dipasang pada:
X86_64_EnableCPUFeatures
Saat sapgenpse cryptinfo dijalankan, breakpoint terkena:
Breakpoint 1, ... in X86_64_EnableCPUFeatures ()
from /usr/sap/<SID>/<ASCS_INSTANCE>/exe/libsapcrypto.so
Kemudian terlihat pula pemanggilan dari:
libslcryptokernel.so
Hal ini memperkuat indikasi bahwa CPU feature initialization merupakan bagian dari proses initialization CommonCryptoLib.
11. Percobaan Menggunakan CommonCryptoLib Lain
Untuk melakukan pengujian tanpa langsung mengganti binary production, library lain diuji menggunakan option -l:
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/sapgenpse \
-l /usr/sap/hostctrl/exe/libsapcrypto.so \
cryptinfo
Hasil:
VERSION = 8.4.47
FILE-VERSION = 8.4.47.0
SELFTEST = OK
CPU-FEATURES-SUPPORTED = AES-NI,CLMUL,SSE3,SSSE3
CPU-FEATURES-ACTIVE = AES-NI,CLMUL,SSE3,SSSE3
Pada library ini tidak terdapat SHAEXT pada active CPU features.
12. Mengapa LD_LIBRARY_PATH Tidak Berhasil?
Salah satu percobaan adalah:
LD_LIBRARY_PATH=/tmp/ccl8447 \
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/sapgenpse cryptinfo
calling init:
/usr/sap/<SID>/<ASCS_INSTANCE>/exe/libsapcrypto.so
Kemudian binary sapgenpse diperiksa:
readelf -d sapgenpse | \
egrep -i 'NEEDED|RPATH|RUNPATH'
Tidak terdapat dependency langsung terhadap:
libsapcrypto.so
Dari string binary ditemukan:
Using -l parameter to load CommonCryptoLib
Using SSL_LIB definition from environment to load CommonCryptoLib
Using SNC_LIB definition from environment to load CommonCryptoLib
Artinya CommonCryptoLib di-load secara dynamic loading, sehingga untuk pengujian lebih tepat menggunakan:
-l /path/to/libsapcrypto.so
13. Segmentation Fault
Pada salah satu eksperimen perubahan library environment, proses mengalami:
Segmentation fault
Hal ini merupakan temuan yang cukup penting.
Dengan strace, terlihat proses membuka:
open("/usr/sap/<SID>/<ASCS_INSTANCE>/exe/libsapcrypto.so",
O_RDONLY|O_CLOEXEC) = 3
Sedangkan GDB sebelumnya menunjukkan bahwa fungsi:
X86_64_EnableCPUFeatures()
dipanggil pada saat initialization.
Dengan demikian terdapat indikasi bahwa CommonCryptoLib initialization dan CPU feature handling layak menjadi fokus investigasi ketika proses mengalami crash.
Namun:
Segmentation fault tidak otomatis membuktikan bahwa SHAEXT merupakan penyebab langsung crash.
Untuk menyatakan SHAEXT sebagai root cause diperlukan konfirmasi dari SAP Note/KBA yang sesuai atau SAP Support.
14. Verifikasi PSE
PSE SAP juga diuji menggunakan:
sapgenpse get_my_name \
-p /usr/sap/<SID>/<APP_INSTANCE>/sec/SAPSYS.pse \
-n all \
-v
PSE (v2) open ok.
Retrieving my certificate... ok.
Getting requested information... ok.
Dengan demikian PSE berhasil dibuka dan certificate dapat dibaca.
Hal ini membantu mempersempit investigasi bahwa masalah bukan sekadar PSE tidak dapat dibuka.
15. Recovery / Startup Berhasil
Setelah sapstartsrv tersedia, SAP instance dapat dijalankan menggunakan:
sapcontrol \
-host 127.0.0.1 \
-nr <NR> \
-function Start
Kemudian:
sapcontrol \
-host 127.0.0.1 \
-nr <NR> \
-function GetProcessList
msg_server, MessageServer, GREEN, Running
enserver, EnqueueServer, GREEN, Running
Artinya SAP instance berhasil running.
Root Cause Analysis
Problem
startsap mengalami:
Startup of Instance Service failed
FAIL: Timeout
Findings
Ditemukan beberapa hal:
sapstartsrvsebenarnya berhasil running.- Port
sapstartsrvberhasil listen. sapcontroldapat berkomunikasi melalui localhost.- SAP instance dapat dijalankan melalui
sapcontrol. - CommonCryptoLib digunakan oleh SAP untuk fungsi cryptographic.
- CommonCryptoLib melakukan CPU feature detection.
- Ditemukan CPU feature
SHAEXTpada library tertentu. - Ditemukan CommonCryptoLib dengan versi berbeda pada environment.
- GDB menunjukkan fungsi
X86_64_EnableCPUFeatures()dipanggil saat initialization. - Dalam eksperimen troubleshooting ditemukan segmentation fault pada proses yang berkaitan dengan loading/initialization crypto library.
Possible Root Cause
Berdasarkan temuan tersebut, kemungkinan masalah berada pada area:
CommonCryptoLib
|
v
Crypto Kernel Initialization
|
v
CPU Feature Detection
|
v
CPU Feature Activation
|
+---- SHAEXT
Kemungkinan yang perlu diperiksa adalah:
compatibility issue atau defect pada CommonCryptoLib saat melakukan CPU feature detection/initialization pada environment tertentu.
Namun belum dapat disimpulkan bahwa:
SHAEXT = confirmed root cause
Tanpa SAP Note/KBA yang secara spesifik menghubungkan defect tersebut dengan versi CommonCryptoLib dan environment yang digunakan.
Recommended Troubleshooting
Untuk kasus serupa, lakukan pengecekan berikut.
1. Cek versi CommonCryptoLib
sapgenpse cryptinfo
Catat:
VERSION
FILE-VERSION
2. Cek CPU features
Catat:
CPU-FEATURES-SUPPORTED
CPU-FEATURES-ACTIVE
3. Cek SAP Kernel
disp+work -version
4. Cek binary CommonCryptoLib
sha256sum libsapcrypto.so
sha256sum libslcryptokernel.so
5. Pastikan library yang digunakan
Jika perlu melakukan testing:
sapgenpse \
-l /path/to/libsapcrypto.so \
cryptinfo
6. Jika terjadi crash
Gunakan tools seperti:
gdb
strace
untuk memastikan apakah crash terjadi ketika CommonCryptoLib sedang melakukan initialization.
7. Cari SAP Note/KBA
Keyword yang relevan:
SAP CommonCryptoLib segmentation fault
SAP CommonCryptoLib CPU feature detection
SAP CommonCryptoLib SHAEXT
SAPCRYPTOLIB X86_64_EnableCPUFeatures
SAP CommonCryptoLib startup crash
SAP Kernel CommonCryptoLib segmentation fault
Best Practice
Jangan menjadikan copy binary dari SAP Host Agent sebagai permanent fix.
Walaupun binary tersebut dapat digunakan untuk eksperimen dan menghasilkan behavior berbeda, versi CommonCryptoLib harus divalidasi berdasarkan:
SAP Product
+
SAP Kernel
+
CommonCryptoLib
+
Operating System
+
CPU / Hypervisor
Jika ditemukan defect, gunakan patch/package resmi SAP sesuai SAP Note/KBA yang relevan.
Referensi
SAP menyediakan dokumentasi mengenai CommonCryptoLib dan CPU feature information:
SAP KBA terkait CommonCryptoLib:
https://userapps.support.sap.com/sap/support/knowledge/en/2543666
SAP KBA mengenai tracing CommonCryptoLib:
https://userapps.support.sap.com/sap/support/knowledge/en/2491573
Kesimpulan
Kasus ini awalnya terlihat sebagai startsap timeout, tetapi troubleshooting menunjukkan bahwa sapstartsrv sebenarnya dapat berjalan dan SAP instance dapat dimulai melalui sapcontrol.
Fokus investigasi kemudian mengarah ke CommonCryptoLib, karena library tersebut melakukan CPU feature detection, termasuk SHAEXT, dan terdapat indikasi crash/segmentation fault pada proses yang berkaitan dengan initialization crypto library.
Dengan demikian, pada kasus SAP ABAP yang mengalami startup failure dan segmentation fault, CommonCryptoLib version, CPU feature detection, SHAEXT, dan compatibility antara Kernel–CCL–OS–VM CPU layak diperiksa sebagai salah satu kemungkinan penyebab.
No Comments