ElasticSearch fails to start after upgrade of SonarQube Community Build from v25.8 to v26.1

Greetings,

after upgrading SonarQube Community Build from v25.8.0.112029 to 26.1.0.118079, SonarQube no longer starts, because ElasticSearch crashes at startup with a Java UnsatisfiedLinkError error, no matter the Java version we try.

Error Message:

2026.02.03 14:46:36 ERROR es[o.e.b.Elasticsearch] fatal exception while booting Elasticsearch
java.lang.UnsatisfiedLinkError: no attach in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

Entire Elastic Log:


2026.02.03 14:46:35 INFO  es[o.e.b.Elasticsearch] version[8.19.8], pid[4017], build[tar/e34ace04b64e9bfa3f9e785b08e6d81f8efe314b/2025-11-26T23:06:12.342148294Z], OS[Linux/6.4.0-150700.53.28-default/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/21.0.9/21.0.9+10-suse-1500-x8664]
2026.02.03 14:46:35 INFO  es[o.e.b.Elasticsearch] JVM home [/usr/lib64/jvm/java-21-openjdk-21], using bundled JDK [false]
2026.02.03 14:46:35 INFO  es[o.e.b.Elasticsearch] JVM arguments [-Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=SPI,COMPAT, -Dorg.apache.lucene.vectorization.upperJavaFeatureVersion=21, -Des.path.home=/u01/opt/sonarqube/elasticsearch, -Des.distribution.type=tar, -Des.java.type=null, --enable-native-access=org.elasticsearch.nativeaccess,org.apache.lucene.core, --enable-native-access=ALL-UNNAMED, -XX:ReplayDataFile=logs/replay_pid%p.log, -Des.entitlements.enabled=true, -XX:+EnableDynamicAgentLoading, -Djdk.attach.allowAttachSelf=true, --patch-module=java.base=/u01/opt/sonarqube/elasticsearch/lib/entitlement-bridge/elasticsearch-entitlement-bridge-8.19.8.jar, --add-exports=java.base/org.elasticsearch.entitlement.bridge=org.elasticsearch.entitlement,java.logging,java.net.http,java.naming,jdk.net, -XX:+UseG1GC, -Djava.io.tmpdir=/u01/var/sonarqube/temp, -XX:ErrorFile=/u01/opt/sonarqube/logs/es_hs_err_pid%p.log, -Xlog:disable, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djna.tmpdir=/u01/var/sonarqube/temp, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=COMPAT, -Des.enforce.bootstrap.checks=true, -Xmx512m, -Xms512m, -XX:MaxDirectMemorySize=256m, -XX:+HeapDumpOnOutOfMemoryError, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, --module-path=/u01/opt/sonarqube/elasticsearch/lib, --add-modules=jdk.net, --add-modules=jdk.management.agent, --add-modules=ALL-MODULE-PATH, -Djdk.module.main=org.elasticsearch.server]
2026.02.03 14:46:35 INFO  es[o.e.b.Elasticsearch] Default Locale [en_US]
2026.02.03 14:46:35 INFO  es[o.e.n.j.JdkVectorLibrary] vec_caps=2
2026.02.03 14:46:35 INFO  es[o.e.n.NativeAccess] Using native vector library; to disable start with -Dorg.elasticsearch.nativeaccess.enableVectorLibrary=false
2026.02.03 14:46:35 INFO  es[o.e.n.NativeAccess] Using [jdk] native provider and native methods for [Linux]
2026.02.03 14:46:35 WARN  es[o.a.l.i.v.VectorizationProvider] Java vector incubator module is not readable. For optimal vector performance, pass --add-modules jdk.incubator.vector to enable Vector API.
2026.02.03 14:46:35 INFO  es[o.e.b.Elasticsearch] Bootstrapping Entitlements
2026.02.03 14:46:36 ERROR es[o.e.b.Elasticsearch] fatal exception while booting Elasticsearchjava.lang.UnsatisfiedLinkError: no attach in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/libat java.lang.ClassLoader.loadLibrary(ClassLoader.java:2458) 
    ~[?:?]at java.lang.Runtime.loadLibrary0(Runtime.java:916) 
    ~[?:?]at java.lang.System.loadLibrary(System.java:2063) 
    ~[?:?]at sun.tools.attach.VirtualMachineImpl.(VirtualMachineImpl.java:324) 
    ~[jdk.attach:?]at sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:58) 
    ~[jdk.attach:?]at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207) 
    ~[jdk.attach:?]at org.elasticsearch.entitlement.bootstrap.EntitlementBootstrap.loadAgent(EntitlementBootstrap.java:121) 
    ~[elasticsearch-entitlement-8.19.8.jar:?]at org.elasticsearch.entitlement.bootstrap.EntitlementBootstrap.bootstrap(EntitlementBootstrap.java:103) 
    ~[elasticsearch-entitlement-8.19.8.jar:?]at org.elasticsearch.bootstrap.Elasticsearch.initPhase2(Elasticsearch.java:253) 
    ~[elasticsearch-8.19.8.jar:?]at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:99) 
    ~[elasticsearch-8.19.8.jar:?]

Further Information

  • OS: SLES15 SP7
  • Java Version: openjdk 21.0.9 2025-10-21
    • OpenJDK Runtime Environment (build 21.0.9+10-suse-1500-x8664)
    • OpenJDK 64-Bit Server VM (build 21.0.9+10-suse-1500-x8664, mixed mode, sharing)
  • Version: Sonarqube Community Build v 26.1.0.118079
  • Plugins:
    • checkstyle
    • delphi
    • dependency-check
    • findbugs
    • pmd
    • yaml
  • how is SonarQube deployed: zip
  • Upgrading SonarQube from v25.8.0.112029 to v26.1.0.118079
  • Upgrading to v25.12 failed because of the DB migration bug
  • v25.12 does start up though, even after a roll-back

Our Upgrade Steps

  • create a backup (mv)
  • download and install (unzip followed by mv)
  • change configuration file
  • copy the Oracle JDBC driver
  • copy the plugins
  • change permissions (chown)
  • restart sonar

Both versions v25.8 and v25.12 do start, without any changes.

Thank you for your help.

Kind regards,

Gilles

Hello @Whiskeyjack thanks for reporting this.
It looks like the JDK being used is missing some libraries. Can you please try to run these two commands and tell us what is the output?

javac -version # This should work if everything is fine with the installation
ls /usr/lib64/jvm/java-21-openjdk-21/lib/libattach.so # Should exist

This problem was faced when JRE was in use instead of JDK.
But in your case it seems the JDK is there.

Hello,

thank you for the quick reply.

  • javac : “command-not-found”
  • ls : libattach.so does not exist

Output of the ls of the folder:

ls /usr/lib64/jvm/java-21-openjdk-21/lib/
classlist           libinstrument.so  libjsvml.so             libsyslookup.so
desktop             libj2gss.so       liblcms.so              libsystemconf.so
jexec               libj2pcsc.so      lible.so                libverify.so
jfr                 libj2pkcs11.so    libmanagement.so        libzip.so
jrt-fs.jar          libjaas.so        libmanagement_agent.so  modules
jspawnhelper        libjava.so        libmanagement_ext.so    psfont.properties.ja
jvm.cfg             libjavajpeg.so    libmlib_image.so        psfontj2d.properties
libawt.so           libjawt.so        libnet.so               security
libawt_headless.so  libjdwp.so        libnio.so               server
libawt_xawt.so      libjimage.so      libprefs.so             tzdb.dat
libdt_socket.so     libjli.so         librmi.so
libextnet.so        libjsig.so        libsctp.so
libfontmanager.so   libjsound.so      libsplashscreen.so

We tried installing different Java versions, but the error message was always the same.

I can check tomorrow to get more information about the Java versions available in SLES 15.

Do you have an idea though why this behaviour only affects the new v26.1 version though?

Thank you.

Kind regards,

Gilles

From what I saw a possible solution is to install the development tools on your JDK, I think Suse does not install that by default.

Something like this:
sudo zypper install java-21-openjdk-devel

(It is almost a guess I am not expert of that OS)
At that point the two commands I provided earlier should return successfully.

1 Like

Good morning,

installing the development tools actually did solve the problem.

The javac and the desired library were installed, and ElasticSearch starts up again.

Thank you for your help!

Out of curiosity: Do you know why earlier versions did not need the development tools?

Thank you again.

Great to hear it worked!
We will include this information somehow in the documentation because we were not aware of this issue with certain OS + JDK combination.

In 26.1 the requirement is JDK instead of JRE due to the newer version of ElasticSearch embedded in the product that now has this requirement.
My understanding is that more Java modules are needed by ElasticSearch, but apparently even if using a JDK your installation was missing those modules needed.

2 Likes

I have the same problem but with the official Docker version when trying to run the latest version of Docker (26.x.x.) from https://hub.docker.com/\_/sonarqube

Welcome to the community @mrcoelho !

Please share your logs, the docker image is not using this OS, so there is a chance is something slightly different.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.