Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8047769

SecureRandom should be more frugal with file descriptors

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 9
    • Component/s: security-libs
    • Labels:
      None
    • Subcomponent:
    • Resolved In Build:
      b48
    • CPU:
      x86
    • OS:
      linux_ubuntu

      Backports

        Description

        If I run this java program on Linux

        public class SecureRandoms {
            public static void main(String[] args) throws Throwable {
                new java.security.SecureRandom();
            }
        }

        it creates 6 file descriptors for /dev/random and /dev/urandom, as shown by:

        strace -q -ff -e open java SecureRandoms |& grep /dev/
        [pid 20769] open("/dev/random", O_RDONLY) = 5
        [pid 20769] open("/dev/urandom", O_RDONLY) = 6
        [pid 20769] open("/dev/random", O_RDONLY) = 7
        [pid 20769] open("/dev/random", O_RDONLY) = 8
        [pid 20769] open("/dev/urandom", O_RDONLY) = 9
        [pid 20769] open("/dev/urandom", O_RDONLY) = 10

        Looking at jdk/src/solaris/classes/sun/security/provider/NativePRNG.java
        it looks like 2 file descriptors are created for every variant of NativePRNG, whether or not they are ever used. Which is wasteful. In fact, you only ever need at most two file descriptors, one for /dev/random and one for /dev/urandom.

        Further, it would be nice if the file descriptors were closed when idle and lazily re-created. Especially /dev/random should typically be used at startup and never thereafter.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                plevart Peter Levart
                Reporter:
                martin Martin Buchholz
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: