Skip to content

Segmentation fault in dracut --sysroot due to recursive kernel module installs #2680

Open
@rcorujo

Description

@rcorujo

Describe the bug
A clear and concise description of what the error is.

I am running SLES15SP6 on the host and have a RHEL 8.10 chroot environment for which I would like to create an initramfs.img.

Run this command:

dracut --debug --sysroot /opt/clmgr/image/images/rhel8.10 --kver 4.18.0-553.el8_10.x86_64 --kmoddir /opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64 --drivers "usb-storage" --force /tmp/my-initramfs.img

The debug output shows that there is a recursive loop that leads to a segmentation fault.

dracut-install: Handle module 'usb_storage'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz'
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz')
dracut-install: dest dir '/opt/clmgr/image/images/rhel8.10/var/tmp/dracut.cHd7Tg/initramfs/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage' does not exist
dracut-install: dracut_install('/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage')
dracut-install: dest dir '/opt/clmgr/image/images/rhel8.10/var/tmp/dracut.cHd7Tg/initramfs/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb' does not exist
dracut-install: dracut_install('/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb')
dracut-install: mkdir '/opt/clmgr/image/images/rhel8.10/var/tmp/dracut.cHd7Tg/initramfs/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb'
dracut-install: mkdir '/opt/clmgr/image/images/rhel8.10/var/tmp/dracut.cHd7Tg/initramfs/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage'
dracut-install: dracut_install ret = 0
dracut-install: cp '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' '/opt/clmgr/image/images/rhel8.10/var/tmp/dracut.cHd7Tg/initramfs/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz'
dracut-install: dracut_install ret = 0
dracut-install: dracut_install 'usb_storage' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz')
dracut-install: dracut_install ret = 0
dracut-install: cp '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' '/opt/clmgr/image/images/rhel8.10/var/tmp/dracut.cHd7Tg/initramfs/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz'
dracut-install: dracut_install ret = 0
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz')
dracut-install: hash hit items for '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz')
dracut-install: hash hit items for '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz')
dracut-install: hash hit items for '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz')
dracut-install: hash hit items for '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz')
...
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz')
dracut-install: hash hit items for '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/uas.ko.xz' OK
dracut-install: dracut_install('/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz', '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz')
dracut-install: hash hit items for '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz'
dracut-install: dracut_install '/opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' '/lib/modules/4.18.0-553.el8_10.x86_64/kernel/drivers/usb/storage/usb-storage.ko.xz' OK
/opt/clmgr/image/images/rhel8.10/usr/lib/dracut/dracut-init.sh: line 999: 1654880 Segmentation fault      (core dumped) $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${hostonly:+-H} ${omit_drivers:+-N "$omit_drivers"} ${srcmods:+--kerneldir "$srcmods"} ${_optional:+-o} ${_silent:+--silent} -m "$@"

Here are the dependencies in the chroot environment. I'm not sure why the debug output shows that the uas kernel module is being installed, since the usb-storage kernel module does not have a dependency on it. It is the uas kernel module that has a dependency on usb-storage, but I didn't request for the uas kernel module to be installed.

# grep usb-storage /opt/clmgr/image/images/rhel8.10/lib/modules/4.18.0-553.el8_10.x86_64/modules.dep
kernel/drivers/usb/storage/uas.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/usb-storage.ko.xz:
kernel/drivers/usb/storage/ums-alauda.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-cypress.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-datafab.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-eneub6250.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-freecom.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-isd200.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-jumpshot.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-karma.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-onetouch.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-realtek.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-sddr09.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-sddr55.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz
kernel/drivers/usb/storage/ums-usbat.ko.xz: kernel/drivers/usb/storage/usb-storage.ko.xz

Distribution used
Which distribution was this behaviour seen in?

SLES15SP6 in the host and RHEL 8.10 in the chroot environment

Dracut version
Which dracut version was this behaviour seen in?

# dracut --version
dracut 059+suse.521.g8412a1c0-150600.1.3

Init system
Which init system is being used?

# ps -p 1 -o comm=
systemd

To Reproduce
Steps or code to reproduce the behavior.

See description of the bug.

Expected behavior
A clear and concise description of what you expected to happen.

No recursive loop and no segmentation fault.

Additional context
Add any other context you like about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions