Log4j and javax.mail are deadlocking

Solution Unverified - Updated -

Issue

  • JBoss became unresponsive. Thread dumps show it was due to threads deadlocking between log4j SMTP appenders and direct usage of javax.mail from the application:

    "WorkManager(2)-1" J9VMThread:0x000000011877C800, j9thread_t:0x0000000118754320, java/lang/Thread:0x070000003BD50160, state:B, prio=5
    (native thread ID:0x36C0D9, native priority:0x5, native policy:UNKNOWN)
    Java callstack:
    at org/apache/log4j/Category.callAppenders(Category.java:201(Compiled Code))
    at org/apache/log4j/Category.forcedLog(Category.java:388(Compiled Code))
    at org/apache/log4j/Category.log(Category.java:849(Compiled Code))
    at org/jboss/logbridge/LogBridgeHandler.publish(LogBridgeHandler.java:72(Compiled Code))
    at java/util/logging/Logger.log(Logger.java:1121(Compiled Code))
    at java/util/logging/Logger.log(Logger.java:1021(Compiled Code))
    at com/sun/activation/registries/LogSupport.log(LogSupport.java:73)
    at javax/activation/MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:548)
    at javax/activation/DataHandler.getDataContentHandler(DataHandler.java:625)
    at javax/activation/DataHandler.writeTo(DataHandler.java:329)
    at javax/mail/internet/MimeUtility.getEncoding(MimeUtility.java:264)
    at javax/mail/internet/MimeBodyPart.updateHeaders(MimeBodyPart.java:1299)
    at javax/mail/internet/MimeMessage.updateHeaders(MimeMessage.java:2071)
    at javax/mail/internet/MimeMessage.saveChanges(MimeMessage.java:2039)
    at javax/mail/Transport.send(Transport.java:119)
    at com/package/Helper.sendDeadlockingMail(Helper.java:166)
    
    "WorkerThread#2[10.2.52.204:58412]" J9VMThread:0x0000000119B48400, j9thread_t:0x0000000119914A80, java/lang/Thread:0x070000003C6E2AE0, state:B, prio=5
    (native thread ID:0x2C508B, native priority:0x5, native policy:UNKNOWN)
    Java callstack:
    at javax/activation/DataHandler.getDataContentHandler(DataHandler.java:625)
    at javax/activation/DataHandler.writeTo(DataHandler.java:329)
    at javax/mail/internet/MimeUtility.getEncoding(MimeUtility.java:264)
    at javax/mail/internet/MimeBodyPart.updateHeaders(MimeBodyPart.java:1299)
    at javax/mail/internet/MimeBodyPart.updateHeaders(MimeBodyPart.java:1008)
    at javax/mail/internet/MimeMultipart.updateHeaders(MimeMultipart.java:414)
    at javax/mail/internet/MimeBodyPart.updateHeaders(MimeBodyPart.java:1285)
    at javax/mail/internet/MimeMessage.updateHeaders(MimeMessage.java:2071)
    at javax/mail/internet/MimeMessage.saveChanges(MimeMessage.java:2039)
    at javax/mail/Transport.send(Transport.java:119)
    at org/apache/log4j/net/SMTPAppender.sendBuffer(Bytecode PC:216)
    at org/apache/log4j/net/SMTPAppender.append(Bytecode PC:56)
    at org/apache/log4j/AppenderSkeleton.doAppend(AppenderSkeleton.java:230(Compiled Code))
    at org/apache/log4j/helpers/AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65(Compiled Code))
    at org/apache/log4j/Category.callAppenders(Category.java:203(Compiled Code))
    at org/apache/log4j/Category.forcedLog(Category.java:388(Compiled Code))
    at org/apache/log4j/Category.error(Category.java:302)
    

Environment

  • JBoss Enterprise Application Platform

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.