Please, review the following change Issue : https://bugs.openjdk.java.net/browse/JDK-8074368 Webrev: http://cr.openjdk.java.net/~jbachorik/8074368/webrev.00
Invoking ThreadMXBean.getThreadInfo(long[] ids, int maxdepth) with an empty array for 'ids' and positive number for 'maxdepth' can result in memory corruption. Basically, the native routine (VM_ThreadDump) considers the empty ids array as a signal to process all the available threads and put their information to the pre-allocated array while the pre-allocated array's size is 0.
The solution is to modify 'management.cpp' and check for 'num_threads' before actually attempting to do the thread dump.
As a defense-in-depth the ThreadMXBean.getThreadInfo(*) methods are modified to adhere to their specification and return 'an array of the ThreadInfo objects, each containing information about a thread whose ID is in the corresponding element of the input array of IDs' - meaning that an empty ids array will result in an empty ThreadInfo array.
Thanks, -JB-