Daniel Mitterdorfer describes how a Jenkins-based continuous integration setup running on SuSE Enterprise Linux 12 SP2 encountered a java.lang.OutOfMemoryError due to the JVM's inability to create new native threads during Elasticsearch builds. The problem was isolated to the system's thread safety margin and process limits, particularly related to the cgroup process number controller managed by systemd. Despite initially attempting to adjust the JVM's thread safety margin and investigating system limits like maximum user processes and thread counts, the solution was ultimately found by increasing the cgroup's process limit for the Jenkins slave process from a conservative 512 to 4096. This adjustment allowed the build process to succeed, highlighting the importance of understanding and configuring system resource limits in complex build environments.