Adding core-libs-dev ...

--Sean

On 6/9/20 5:15 PM, Mkrtchyan, Tigran wrote:

Hi all,

with Java-11 we have notice a thread leak with ldap module.
We use LDAP to authenticate users with username+pasword by
directly calling LdapLoginModule. This was ok with java 7 and
java 8. With java 11 we see threads getting accumulated. here is a
test case that demonstrates it:

```

     private static final String USERNAME_KEY = 
"javax.security.auth.login.name";
     private static final String PASSWORD_KEY = 
"javax.security.auth.login.password";

     String ldapUrl = "ldap://....";;
     String peopleOU = "ou= ... o= ... c=...");

    String user = ...;
    String pass = ...;


     @Test
     public void threadLeakTest() throws AuthenticationException, 
NoSuchPrincipalException, LoginException {

         Map<Thread, StackTraceElement[]> threadsBefore = 
Thread.getAllStackTraces();

         Map<String, Object>  globalLoginOptions = Map.of(
                 "userProvider", ldapUrl + "/" + peopleOU,
                 "useSSL", "false",
                 "userFilter", "(uid={USERNAME})",
                 "useFirstPass", "true"
         );

         for (int i = 0; i < 10; i++) {

             Map<String, Object> loginOptions = Map.of(
                     USERNAME_KEY, user,
                     PASSWORD_KEY, pass.toCharArray());

             Subject subject = new Subject();

             LdapLoginModule loginModule = new LdapLoginModule();
             loginModule.initialize(subject, null, loginOptions, 
globalLoginOptions);
             loginModule.login();
             loginModule.commit();
             loginModule.logout();
         }

         Map<Thread, StackTraceElement[]> threadsAfter = 
Thread.getAllStackTraces();

         assertEquals("Thread leak detected",  threadsBefore.size() + 1, 
threadsAfter.size());
     }

```

The thread count difference is always equals to the number of iterations in the 
loop, e.g. on each call a
thread is created and stays around. Eventually our server crashes with:

[19497.011s][warning][os,thread] Attempt to protect stack guard pages failed 
(0x00007fcc4c65c000-0x00007fcc4c660000).
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fcc4c55b000, 
16384, 0) failed; error='Not enough space' (errno=12)

The issue is not observed with java-14, thus I assume that the fix is related 
to commit

http://hg.openjdk.java.net/jdk/jdk/rev/6717d7e59db4

As java-11 is LTS, what is the procedure to get it fix back-ported?

Regards,
    Tigran.

Reply via email to