openjdk8 deadlock on aarch64
openjdk8 deadlocks when building libreoffice on aarch64.
backtrace:
(gdb) bt
#0 __syscall4 (d=0, c=-2147483645, b=128, a=281462854344244, n=98)
at ./arch/aarch64/syscall_arch.h:48
#1 __futexwait (priv=128, val=-2147483645, addr=0xfffd2d735e34 <__malloc_lock>)
at ./src/internal/pthread_impl.h:165
#2 __lock (l=l@entry=0xfffd2d735e34 <__malloc_lock>) at src/thread/__lock.c:44
#3 0x0000fffd2d6ae654 in rdlock () at src/malloc/mallocng/glue.h:63
#4 malloc (n=n@entry=2072) at src/malloc/mallocng/malloc.c:337
#5 0x0000fffd2d6acf7c in calloc (m=<optimized out>, n=2072) at src/malloc/calloc.c:40
#6 0x0000fffd2d6a525c in opendir (name=name@entry=0xfffd2c9a0b80 "/proc/self/fd")
at src/dirent/opendir.c:15
#7 0x0000fffd2c995968 in closeDescriptors ()
at /home/buildozer/aports/community/openjdk8/src/icedtea-3.16.0/openjdk/jdk/src/solaris/native/java/lang/childproc.c:99
#8 0x0000fffd2c99604c in childProcess (arg=arg@entry=0xfffcd2167fc0)
at /home/buildozer/aports/community/openjdk8/src/icedtea-3.16.0/openjdk/jdk/src/solaris/native/java/lang/childproc.c:350
#9 0x0000fffd2c992b30 in vforkChild (c=c@entry=0xfffcd2167fc0)
at /home/buildozer/aports/community/openjdk8/src/icedtea-3.16.0/openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c:435
#10 0x0000fffd2c9930f0 in startChild (env=<optimized out>, process=<optimized out>,
helperpath=<optimized out>, c=<optimized out>)
at /home/buildozer/aports/community/openjdk8/src/icedtea-3.16.0/openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c:553
#11 Java_java_lang_UNIXProcess_forkAndExec (env=0xfffd2d7259e0, process=<optimized out>, mode=3,
helperpath=0xfffd2cbd9520, prog=0xfffd2cbd9518, argBlock=0xfffd2cbd9510,
argc=<optimized out>, envBlock=0x0, envc=0, dir=0xfffd2cbd94f0, std_fds=0xfffd2cbd94e8,
redirectErrorStream=0 '\000')
at /home/buildozer/aports/community/openjdk8/src/icedtea-3.16.0/openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c:646
#12 0x0000fffd249e049c in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
Looks like a classic use of malloc after fork while closing all fds