Bugzilla – Bug 463582
Installation of JRE 6 update 12 breaks boot (binfmt_misc issue)
Last modified: 2010-07-28 10:15:59 UTC
Created attachment 263214 [details] SysRq-T dump Installing Java 6 update 12 JRE (http://pack.suse.cz/mvyskocil/sun_java_u12_howto/) breaks boot if you enable NFS client mounts. The problem is stuck "mount -t binfmt_misc none /proc/sys/fs/binfmt_misc". I was able to reproduce the issue even in RPM installation. The process states are following: dhcp27:~ # pstree -p 9081 rpm(9081)???sh(9082)???jexec(9260)???jexec(9261)???jexec(9262)???mount(9264) dhcp27:~ # ps xa ... 9081 pts/0 S+ 0:00 rpm -i /tmp/jre-6u12-ea-linux-amd64.rpm 9082 pts/0 S+ 0:00 /bin/sh /var/tmp/rpm-tmp.89787 1 9260 pts/0 S+ 0:00 /bin/sh /etc/init.d/jexec start 9261 pts/0 S+ 0:00 /bin/sh /etc/init.d/jexec start 9262 pts/0 S+ 0:00 /bin/sh /etc/init.d/jexec start 9264 pts/0 D+ 0:00 mount -t binfmt_misc none /proc/sys/fs/binfmt_misc 9265 ? S< 0:00 [khelper] 9266 ? S 0:00 /sbin/modprobe -q -- binfmt_misc 9267 ? S 0:00 sh -c /sbin/modprobe --ignore-install binfmt_misc && { mount -t binfmt_misc none /proc/sys/fs/binfmt_misc; } 9270 ? S 0:00 mount -t binfmt_misc none /proc/sys/fs/binfmt_misc ... SysRq-t dump is attached (too long for inline). Obviously there is a deadlock between the two mounts (9264 & 9270) introduced by line 274 in /etc/modprobe.conf. How to reproduce: 1) install SLES11 RC1 x86_64, minimal system config 2) download Java 6u12 JRE RPM, unpack the shell archive 3) install the JRE RPM, maybe it deadlocks already here 4) enable NFS mounts in your setup 5) reboot - the reboot will fail as the NFS mount will be blocked by the stalled binfmt_misc mount Workaround: Manually kill the shell running the second mount (usually does not work during boot, SSH is started later), or possibly disable the install script in modprobe.conf (untested).
Why do the two mount commands deadlock? :( Libor, does the deadlock go away if you change the install line to install binfmt_misc /sbin/modprobe --ignore-install --first-time binfmt_misc && { mount -t binfmt_misc none /proc/sys/fs/binfmt_misc; } ? With --first-time, the second modprobe command should fail.
(In reply to comment #1 from Michal Marek) > Why do the two mount commands deadlock? :( Ah, the first mount comes from the init script and results in a request_module("binfmt_misc") call which results in another mount and a deadlock. Crap.
Trying "mount -t binfmt_misc none /proc/sys/fs/binfmt_misc" suffices to reproduce the deadlock. Strange I did not try it before. I was probably too focused on the Java package.
Right, because it goes like mount -> request_module -> modprobe -> mount. I'll check if any package relies on the install line and remove it.
It seems that binfmt_misc is only used by java. Our /etc/init.d/java.binfmt_misc doesn't require the automatic mounting (but it also doesn't break with the current setup). I'll nuke the install line.
done.
*** Bug 462550 has been marked as a duplicate of this bug. ***
if there is ever an online update for that issue, release also afected libspe2 for bug #467540
Sorry about that, I did check if other packages are affected, but I only looked at i586.
Moving to openSUSE so that openSUSE users are able to find it and stop reporting duplicates.
*** Bug 461199 has been marked as a duplicate of this bug. ***
As written in the duplicates, there is going to be an online update for 11.1 to address this bug. In the meantime, you can delete the this line install binfmt_misc /sbin/modprobe --ignore-install binfmt_misc && { mount -t binfmt_misc none /proc/sys/fs/binfmt_misc; } from /etc/modprobe.conf as a workaround.
*** Bug 468970 has been marked as a duplicate of this bug. ***
*** Bug 471179 has been marked as a duplicate of this bug. ***
*** Bug 461786 has been marked as a duplicate of this bug. ***
*** Bug 462609 has been marked as a duplicate of this bug. ***
Update released for: module-init-tools Products: openSUSE 11.1 (debug, i586, ppc, x86_64)