https://bz.apache.org/bugzilla/show_bug.cgi?id=67934

            Bug ID: 67934
           Summary: APR connectors will fail to load when tcnative-1 and
                    tcnative-2 are installed in parallel
           Product: Tomcat 9
           Version: 9.0.x
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Connectors
          Assignee: dev@tomcat.apache.org
          Reporter: micha...@apache.org
  Target Milestone: -----

Note: This applies to both 8.5.x and 9.0.x.

Since tcnative 1.x and 2.x can be installed side by side:
> root@deblndw011x:/tmp/local/lib
> # ll
> total 19576
> drwxr-xr-x  2 osipovmi  wheel      512 2023-10-12 17:24 engines-3/
> -rw-r--r--  1 osipovmi  wheel  8917782 2023-10-12 17:24 libcrypto.a
> lrwxr-xr-x  1 osipovmi  wheel       14 2023-10-12 17:24 libcrypto.so@ -> 
> libcrypto.so.3
> -rwxr-xr-x  1 osipovmi  wheel  5050168 2023-10-12 17:24 libcrypto.so.3*
> -rw-r--r--  1 osipovmi  wheel  1328044 2023-10-12 17:24 libssl.a
> lrwxr-xr-x  1 osipovmi  wheel       11 2023-10-12 17:24 libssl.so@ -> 
> libssl.so.3
> -rwxr-xr-x  1 osipovmi  wheel   783496 2023-10-12 17:24 libssl.so.3*
> -rw-r--r--  1 osipovmi  wheel  1701660 2023-10-27 12:57 libtcnative-1.a
> -rwxr-xr-x  1 osipovmi  wheel     1052 2023-10-27 12:57 libtcnative-1.la*
> lrwxr-xr-x  1 osipovmi  wheel       23 2023-10-27 12:57 libtcnative-1.so@ -> 
> libtcnative-1.so.0.2.40
> lrwxr-xr-x  1 osipovmi  wheel       23 2023-10-27 12:57 libtcnative-1.so.0@ 
> -> libtcnative-1.so.0.2.40
> -rwxr-xr-x  1 osipovmi  wheel   975800 2023-10-27 12:57 
> libtcnative-1.so.0.2.40*
> -rw-r--r--  1 osipovmi  wheel   567160 2023-10-27 10:39 libtcnative-2.a
> -rwxr-xr-x  1 osipovmi  wheel     1050 2023-10-27 10:39 libtcnative-2.la*
> lrwxr-xr-x  1 osipovmi  wheel       22 2023-10-27 10:39 libtcnative-2.so@ -> 
> libtcnative-2.so.0.0.7
> lrwxr-xr-x  1 osipovmi  wheel       22 2023-10-27 10:39 libtcnative-2.so.0@ 
> -> libtcnative-2.so.0.0.7
> -rwxr-xr-x  1 osipovmi  wheel   361312 2023-10-27 10:39 
> libtcnative-2.so.0.0.7*
> drwxr-xr-x  2 osipovmi  wheel      512 2023-10-12 17:24 ossl-modules/
> drwxr-xr-x  2 osipovmi  wheel      512 2023-10-12 17:24 pkgconfig/
or on Windows:
> PS C:\Temp\apache-tomcat-9.0.83-dev\bin> gci -include *.dll
> PS C:\Temp\apache-tomcat-9.0.83-dev\bin> gci -Path *.dll
> 
>     Directory: C:\Temp\apache-tomcat-9.0.83-dev\bin
> 
> Mode                 LastWriteTime         Length Name
> ----                 -------------         ------ ----
> -a---          2023-09-28    14:25        3577344 tcnative-1.dll
> -a---          2023-09-27    16:24        3424256 tcnative-2.dll

Now let's start Tomcat 9 with APR connector configured. Library.java will use:
> private static final String [] NAMES = {"tcnative-2", "libtcnative-2", 
> "tcnative-1", "libtcnative-1"};

Result:
> 27-Oct-2023 13:11:18.029 INFORMATION [main] 
> org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler 
> ["https-openssl-apr-30001"]
> 27-Oct-2023 13:11:18.033 SCHWERWIEGEND [main] 
> org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to 
> initialize component [Connector["https-openssl-apr-30001"]]
>         java.lang.UnsatisfiedLinkError: 
> org.apache.tomcat.jni.Address.info(Ljava/lang/String;IIIJ)J
>                 at org.apache.tomcat.jni.Address.info(Native Method)
>                 at 
> org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:361)
>                 at 
> org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1326)
>                 at 
> org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1339)
>                 at 
> org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:654)
>                 at 
> org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:75)
>                 at 
> org.apache.catalina.connector.Connector.initInternal(Connector.java:1009)
>                 at 
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:127)
>                 at 
> org.apache.catalina.core.StandardService.initInternal(StandardService.java:554)
>                 at 
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:127)
>                 at 
> org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1039)
>                 at 
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:127)
>                 at 
> org.apache.catalina.startup.Catalina.load(Catalina.java:724)
>                 at 
> org.apache.catalina.startup.Catalina.load(Catalina.java:746)
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                 at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>                 at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>                 at 
> org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:307)
>                 at 
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:477)
> 27-Oct-2023 13:11:18.041 INFORMATION [main] 
> org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler 
> ["https-openssl-apr-30002"]
> 27-Oct-2023 13:11:18.042 SCHWERWIEGEND [main] 
> org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to 
> initialize component [Connector["https-openssl-apr-30002"]]
>         java.lang.UnsatisfiedLinkError: 
> org.apache.tomcat.jni.Address.info(Ljava/lang/String;IIIJ)J
>                 at org.apache.tomcat.jni.Address.info(Native Method)
>                 at 
> org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:361)
>                 at 
> org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1326)
>                 at 
> org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1339)
>                 at 
> org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:654)
>                 at 
> org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:75)
>                 at 
> org.apache.catalina.connector.Connector.initInternal(Connector.java:1009)
>                 at 
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:127)
>                 at 
> org.apache.catalina.core.StandardService.initInternal(StandardService.java:554)
>                 at 
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:127)
>                 at 
> org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1039)
>                 at 
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:127)
>                 at 
> org.apache.catalina.startup.Catalina.load(Catalina.java:724)
>                 at 
> org.apache.catalina.startup.Catalina.load(Catalina.java:746)
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                 at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>                 at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                 at java.lang.reflect.Method.invoke(Method.java:498)
>                 at 
> org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:307)
>                 at 
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:477)

So if we assume that both 1.x and 2.x are functionally identical, but for APR
the line in Library should eiher read:
> private static final String [] NAMES = {"tcnative-1", "libtcnative-1"};
or
> private static final String [] NAMES = {"tcnative-1", "libtcnative-1", 
> "tcnative-2", "libtcnative-2"};
or maybe something else?

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to