Gather logs from stuck boot #409
Open
opened 2025-08-21 09:26:13 +00:00 by kparal
·
9 comments
No Branch/Tag specified
main
freeipa-login-fix
fix-map-scale
fix-maps-route
fix-offscreen-userspoke
kde-network-fix-invisible
remote-desktop-debug
notifications-disable-f43-aarch64
sut_packages
arch-check-rmdepcheck-only
fix/kmscon
fix/silverblue_serial_console
fix/double_file
webui-custom-kde-updates
revert-colorize-disable
util-cannon
anaconda-boot-next-gnome
fix/ssh_check
podman-skip-passt
live-switched-passwordfix
notifications-fresh-user
eln-kde-cyrillic-no-switch
staging
fix/maps_loading
fix/anaconda_slowness
root-exists-tweak
kickstart-badpackage
fix/start_setup
fix/maximize
systemd-terminal-scattergun
fix/fonts
newtest/openvpn
xrdp-cannon
kde-login-cannon
2440238-testcannon
fix/calculator
initrd-hang-cannon
gnome-ibus-crash-cannon
bash_syntax_fix
keyring-kwallet-create
updates-server-boot-iso
plasmalogin-updates
kernel-vmmouse-bisect
fix-testdata-link
overlay_attempts
eol-cleanups-202601
needle-cleanup-202601
ci-f41-fix
kde-plasma-setup-changes
nmcli-discovery-refine
blivet-custom-larger-boot
vkcube-42-error
vk-validate
kde-dug-retry
fix/update_to_new_repository
2404267-poking
usb-aarch64
silverblue-aarch64
aarch64-compose-misc
updates-server-aarch64
container-kiwi-aarch64
no-aarch64-groups
updates-kde-disk-aarch64
boot_iso_as_usbdisk
boot_iso_as_usbdisk_adam
boot_iso_as_usbdisk_alternative
update-upgrade-aarch64
updates-cloud-aarch64
support-server-link
blivet-swraid-moar-raid
better-ostree-fixes
fix-updvercheck-canned
webui-language-adams-version
setup-repos-retry-downloads
aarch64-ebi
kde-updates-keyring
fix/fullscreen
fix/login2
rmdepcheck
iot-static-stop-greenboot
whoami-output
more-dnf-retry
webui_european_language
createrepo-retry
rdp-aarch64-console
desktop-login-kde
updates-kde-aarch64
remote_desktop_freerdp
kde-anaconda-launch-welcome
kde-unwanted-gtk2
keyboard_layout_webui
gis-tz-49
kde-aarch64
journal-avc-dump
kleopatra-startstop
fix/i3tiling
updates-workstation-aarch64
update-cloud
package-ftp-autofs
podman-tcp-flake
webui-no-user
iot-ignition
no-kgpg
fix/browser
webui-datetime
software-key-prompt
updates-desktop-login
show_details_when_failed
podman-bats-rootless
podman-full-adam
podman-rootless
unified_buttons
rdp-server-wait
cis-update
kernel-mystery-permissive
pass_KDE_webUI
kde-webui-adamw
fix-upgrade
newtest/sofware2
tag-reduce-updatepkgs
kde-okular
add_tests_for_papers
webui-updates
navigation-showtime
uefi-fallback-no-transient
openh264-change
update-upgrade-best
check-signed-packages
gte-48
fonts-adwaita
fix/gnome_start_stop
gnome-48
reduce-pagure-usage
boot_iso_as_usbdisk_old
newtest/kwrite
new_menu_launch_type
fmw-ws-kde
buildroot-repo
anaconda-layout-switch-click
newtest/dolphin
webui-custom
lukas_testing
test-2325780
os-release-addon
error_reporting
tweak-update-fwupd
webui-lang-select
onyx-test
test-2329581
live-install-retry
workaround-2335913
cpu-host
vnc-to-rdp
extend_navigation
kde_kcalc
kde_gwenview
kiwi-live-refactor
gnome_accessibility
dnf5
abstract-launch-terminal
printing-robustify-maximize
extend-desktop-update-tests
kde-applications
keyring-simplify-robustify
i3-tests-rebased
dm-login-factor
kde62-update-fix
eln-updates
rawhide-ver-ge
ptyxis
update-fonts-test
test-2442-revert
lorax-check-packages
aarch64-update-tests
excludepkgs
gnome-calculator-short
updvercheck-dnf
firefox-studies-update
serial-mode-no-question
silverblue_startstop
fix_timer_needle
desktop_keyring
desktop_keyring_ssh
updates-netinst-addrepos
flatpak-proxy
copr
dnf5-fixes
drop-1943943-workaround
kiwi-container
graphical_upgrade_workstation
22747700-debug
apps-startstop-optimize
prerelease-softfail-iot
newtest/navigation
secure-boot-test
fix-skip-repo-setup
updates-silverblue-uefi
iot-309-workaround
guw-lukas
fix/location
numdisks-fix
fix/startstop_kde
toolbox-compose-test
cockpit_partitioning
workstation-osbuild
gtk-test
newtest/window-manager
concdl
revert-update-images
needle-cleanup-202401
aasetting-no-black
flatpak_install
rtt-tests
sysmon-click
cheese-snapshot
fix/timestamp
select_language
newtest/loupe
pikvm
fix-gis
webui
domain-replica-decommission
desktop_high_contrast
podman-upstream
samba-workaround
new_anaconda_workstation
http2
fontfix
fix/login
ad-fix
flock_talk
samba-ad
turkish_installation
retire_modularity
pagure-retry
sumantro-review
fix/volumebar
test-tag
fix/gnome-text-editor
eln-more-tests
newtest/tour
update-image
eln
ocr-needles
simplify-blivet-resize-ppc
ostree-custom-ref
needle-cleanup-202304
kill-universal
serialfixes
newtest/gnome-panel
fix-evince
newtest/software
newtest/fonts
package-test-pandoc
pykickstart-update-fix
better-check-nonmatching
ostree-generic
image-build-rawhide-buildroot
fix-maps
lowlevel
fix-nautilus
ostree
chunked-nvrs
fix/deduplicate_needles
tap2
ostree-build
newtest/maps
gis-ipa
move-vars
fix/default_fonts
newtest/contact
fix/bugzilla-crash-reporting
system_monitor
fix/newtest-needle
bugreporter
newtest/archiver
rebase-ro-workaround
fix/text_editor
ipa-enable-dnssec
disable-updates-testing-upgradepre
aarch64-more-workstation
weston
fix/2120433-workaround
ostree-usroverlay
fix/modularity_rawhide
gtk4
anaconda-gpt-default
fix/startstop-tests
fix/37-gnome-fixes
nautilus-fixes
newtest/weather
calculator-flatpak
newtest/calculator
ci-latest-container-2
large-updates
perltidy
perllint
fix/desktop_login
newtest/file_manager
upstream-retry
repodata_fix
newtest/help
newtest/clocks
rhel-trial
firefox-quit-fail-reboot
fix/kde_setup
firefox-ostree
feature/i18n_default_fonts
fix/vault
drop-workarounds-36
rawhide-updates
update-tweak-again
test/system-settings
gte-old
iot-uefi
fix/desktop_printing_cupsless
fix/fedora-release.pm
newtest/gnome-text-editor
fix/supporting_routines
eog/defensive
fix/boot_to_anaconda
more-addrepo-fun
newtest/gui-upgrade
upgrade-postinstall
postupgrade_tests
ci-latest-container
newtest/eog
gnome-app-robust
workaround-1999321
freeipa-noresolved
shell-overview-robustify
fix-root
update-install-source-check
addrepo-metalink
newtest/gedit
needle-cleanup-2021
fprint-auth
newtest/evince
cloud-uefi
fix-osrelease-fedoralinux
autococonut/hello_world
fix/issue_228
desktop-update-loop-tweak
desktop-upgrade-aarch64
updates-podman
newtest/kde_plasma_disks_vault
jpeglx-workaround
japanese-input-method
cleanup-update-needles
delete_unused_needles
smolkonsole-fix
nonlive-fix
fix-check-source
fix-cloud
fix/install_resize_lvm
vnc-boxes-to-connections
drop-1691487-workaround
enhancement/modularity_list
unwanted-packages
move-blivet-resize-lvm
newtest/modularity_test_all
kde-notifications-f34
fix-kde-updates
test/btrfs_preserve_home_uefi
aarch64-encrypt-workaround
kde-system-monitor
gnome-shell-overviewdefault
kde-apps-lo
kde-update-fix
fix-preserve-home
feature/custom_blivet_lvm_ext4
feature/custom_blivet_standard
feature/custom_blivet_preserve_home
feature/custom_btrfs_preserve_home
not-domain-local
cockpit-234
fix/search_for_textfield
fix/standard
fix/lvm_tests
universal-overhaul
apptest_gedit
cockpit-232-fix
unify-base-tests
aarch64-images
fix/configure_menu
simplify-notifications
freeipa-resolved
no-pkgs-for-arch
coreos
gis-next
reboot-gnome
feature_mousedrag
install-with-swap
iot-zezere
new-host-ip
clevis-tpm
base-update
iot-rpmostree-overlay
blivet_reset_resize
No results found.
Labels
Clear labels
Closed As
Duplicate
Closed with the reason of Duplicate
Closed As
Fixed
Closed with the reason of Fixed
Closed As
Invalid
Closed with the reason of Invalid
easyfix
freeipa
issues or enhancement requests related to FreeIPA in some way
improvetest
some kind of improvement (but not bug fix) to an existing test
iot
issues relating to test enablement on Fedora IoT
newtest
requests for new tests
silverblue
issues relating to test enablement on Fedora Silverblue
tracker
tracker issue, only exists to track a set of related issues
ai-review-please
Request AI review for a pull request
Backlog Status
Needs Review
Work items that have been created or updated but need review, refinement, or approval before they can be considered ready for sprint planning.
Backlog Status
Ready
Work items that have been reviewed, refined, and are ready to be committed to a sprint. These items have clear requirements and can be worked on immediately when capacity is available.
chore
Work that needs to be done but doesn't add new functionality or fix bugs. Maintenance tasks that keep the system running smoothly and the codebase clean.
documentation
Work focused on creating, updating, or improving documentation for users, developers, or system administrators.
points
01
A task that is simple, small, and has very little uncertainty. It should be easy enough for any team member to pick up and complete quickly, without a lot of discussion or research.
points
02
This is a task that is slightly more complex or larger than a "1." It might involve two or three simple steps, but the outcome is still very clear and there's little uncertainty.
points
03
Medium-sized task with some noticeable complexity. It might require a bit more thought or collaboration. The steps are well-defined, but it's not a trivial change.
points
05
A significant piece of work. It has more complexity and a higher degree of uncertainty than smaller tasks. It might require some research, a design discussion, or collaboration across multiple teams.
points
08
Complex task with a lot of uncertainty. It's often the largest size that a team will consider for a single sprint. It likely requires a detailed breakdown and multiple team members to complete.
points
13
Any task that feels like it's a "13" or more is considered an Epic. These are too large and uncertain to be worked on in a single sprint and should be broken down.
pr2jira
Sync this pull request to Jira for Agility tracking. Only use for PRs without a corresponding ticket.
Priority
Critical
This is for work that is urgent and of critical importance and so and must be addressed immediately with a higher priority than all other work, even if not originally planned for the current sprint.
Priority
High
This is for work that is critical and needs to be addressed in the next sprint. It's often for urgent bugs, important features, or a major piece of technical debt that is blocking other work.
Priority
Low
This is for work that is good to do but not urgent. It's a candidate for being worked on when there's extra time or when it rises in importance. It can stay in the backlog for a longer period.
Priority
Medium
This is for important work that should be done soon, but isn't as urgent as a high-priority item. It will likely be considered for the next 1-2 sprints.
Sprint Status
Blocked
Work items that cannot progress due to external dependencies, blockers, or issues that need resolution.
Sprint Status
Done
Work items that have been completed, reviewed, and integrated. No further work is needed within the current sprint.
Sprint Status
In Progress
Work items currently being worked on by a team member. Active development, research, or implementation is happening.
Sprint Status
Review
Work items that are complete but need review, testing, or approval before being marked as done.
Sprint Status
To Do
Work items that are committed to the sprint but haven't been started yet. These items are ready to be picked up by team members.
Technical Debt
Work that addresses shortcuts, workarounds, or suboptimal implementations that were done previously to meet deadlines. These items improve code quality, maintainability, or performance without adding new features.
Work Item
Bug
Issues where the system is not working as intended or designed. Bugs represent deviations from expected behavior.
Work Item
Epic
Large initiatives that are broken down into multiple smaller work items (user stories, tasks, bugs). Epics represent significant features or projects that span multiple sprints.
Work Item
Spike
Time-boxed research, investigation, or proof-of-concept work to reduce uncertainty or explore solutions. Spikes help inform future development decisions.
Work Item
Task
Used to break down larger user stories into smaller, manageable implementation pieces. They focus on the specific technical steps needed to deliver the user story's value.
Work Item
User Story
User-facing features or functionality that can be framed from a user perspective, describing what someone wants to accomplish and why.
No labels
Closed As
Duplicate
Closed As
Fixed
Closed As
Invalid
easyfix
freeipa
improvetest
iot
newtest
silverblue
tracker
ai-review-please
Backlog Status
Needs Review
Backlog Status
Ready
chore
documentation
points
01
points
02
points
03
points
05
points
08
points
13
pr2jira
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Sprint Status
Blocked
Sprint Status
Done
Sprint Status
In Progress
Sprint Status
Review
Sprint Status
To Do
Technical Debt
Work Item
Bug
Work Item
Epic
Work Item
Spike
Work Item
Task
Work Item
User Story
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
quality/os-autoinst-distri-fedora#409
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Thinking about the cases where gdm doesn't start at all, like here:
https://openqa.fedoraproject.org/tests/3643039
I noticed that we basically have no gathered logs in there. Why? Could openqa try to switch to tty to gather logs?
To cover cases where there's no user to log in as (e.g. stuck boot after fresh install), we could just always add
systemd.debug-shellto the kernel cmdline, and then we would have a root shell permanently available on TTY9. This way, we could always gather system logs, regardless of the system state.Thoughts?
It does. If we don't get logs, it means switching to tty didn't work.
The code is in https://pagure.io/fedora-qa/os-autoinst-distri-fedora/blob/main/f/lib/installedtest.pm#_35 . It has special handling for dracut emergency mode, otherwise it switches to tty6 and tries to upload logs (if networking works and tar is available) or dump them out on the serial console (if not).
In this case, switching to tty6 doesn't work, the system is hung too hard for some reason. The second red thumbnail is openQA checking for either a logged-in console or a login prompt, and finding neither. You can see the record of this in https://openqa.fedoraproject.org/tests/3643039/logfile?filename=autoinst-log.txt , from lines 1326 (where the initial failure happens) onwards - we see
select_console(testapi_console="tty6-console")to try and get to tty6, then we try and match the login prompt or a logged-in console, but fail.A human in this case would likely reboot to runlevel 3 to get logs. We could try and enhance post_fail_hook to do that, I guess, but it might get a bit complicated.
Ok, if there's an automated step to try to gather logs from TTY6, that's great. In this particular case, TTY switching really doesn't work, I confirmed manually.
I wonder what OpenQA does in cases when no system user is available (after Workstation install but before gnome-initial-setup)? In that case, the
systemd.debug-shellapproach might be useful.it doesn't use the system user, it uses root. We create the root account on almost all test paths.
There are definitely occasional cases where the current approach doesn't work, but addressing them is complex. "just always add systemd.debug-shell to the kernel cmdline" has several problems: it's actually quite hard to reliably add kernel args such that they will be present in every test. In some situations the bootloader timeout is very short so we can't reliably do it at boot time. We can inject args after install for tests which involve an anaconda install, but some tests don't.
And beyond the practical problems, there's the philosophical one that we want our tests to resemble real-world usage as closely as possible, and it's not typical to boot with
systemd.debug-shellin real-world usage; it's possible that doing it could cause a bug that otherwise wouldn't happen, or hide one that otherwise would.So far I've preferred in such cases to reproduce the problem manually, or hack up the tests temporarily on the staging instance to get the logs out in some way. We can definitely consider ways to improve this, but I don't think it's easy.
Metadata Update from @adamwill:
Yeah, I was more thinking about the cases where you boot from a pre-created disk image, but obviously that's just some fraction of the tests.
I think we can close this ticket, but I still want to ask about this:
How do you do this for Workstation installation?
Like this. It's a divergence from a stock install, yeah - but one we live with, because just a lot of the tests are designed around having a root account available and it'd be a lot of work to rejig them all to work without one.
(I mean...we could look at having root_console do sudo, but...mehhh...)
I'm surprised it works fine without forcing a SELinux relabel. Ok, thanks. I think we can close this.
For future reference, if this is really needed one day - editing the kernel args is not needed, this can be also enabled by running
systemctl enable debug-shellin the installed system, or just by creating the appropriate symlink in etc. Sourcesure, but the general issue is 'there's no single, surefire way to do this for all tests'. all the tests have different circumstances.