[gelöst] softhddrm - Segfault mit Parameter -g 1920x1080+0+0 -r 50

  • Hallo,

    ich versuche immer noch softhddrm auf meinem Asrock N100M zum laufen zu bekommen.

    Leider ruckelt das Bild sehr stark und wenn ich die Parameter -g 1920x1080+0+0 -r 50 mitgebe, kommt es zu einem Segfault mit folgendem bt:

    Im Makefile hatte ich Folgendes eingestellt:

    Die Klasse wird wohl aufgerufen und in Zeile 181 kracht es dann: (wenn ich es richtig verstehe)


    Fehlt da evtl. noch etwas in meinem System?

    jojo61 Kannst Du da etwas erkennen?

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • heifisch February 7, 2025 at 1:55 PM

    Changed the title of the thread from “softhddrm - Segfault mit Parmeter -g 1920x1080+0+0 -r 50” to “softhddrm - Segfault mit Parameter -g 1920x1080+0+0 -r 50”.
  • Ohne die Parameter -g 1920x1080+0+0 -r 50 habe ich Bild und Ton und ohne libplacebo sogar Ruckelfrei.

    Mit libplacebo stockt es, weil die Video-Ausgabe in der größtmöglichen Auflösung gemacht wird.

    Nur kann ich die Auflösung nicht auf 1920x1080 begrenzen.


    Hier noch ein BT mit aktivierten glibc Debug-Informationen:

    Hat der Crash da nicht in der glibc stattgefunden?

    Über __memmove_avx_unaligned_erms findet man im Netz diverses, nur verstehe ich es leider nicht.

    Verschiedene Mesa-Versionen mit unterschiedlichen Einstellungen, habe ich getestet, aber immer der gleich Fehler.

    Hier das zugehörige log dazu:

    Hat da vielleicht noch jemand eine Idee?

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • As I understand, in the case of drm -g does not work, and should not work, these are the parameters for the window in x11. For drm it is always displayed on the full screen and the resolution is set by the system parameters.

  • Feb 7 12:25:57 vdr vdr[2035]: Use Mode 21 1920x1080 Rate 60

    Kann es ein das dein TV/Monitor kein 1920x1080x50 kann ? Zumindest scheint es nicht im EDID zu sein. Lass mal die -r 50 weg. Ist eh der default.

    Ausserdem lädst du das EDID aus einer Datei, passt das wirklich zu deinem TV ? Lass es mal mit dem EDID vom TV laufen, also kein EDIT bei booten laden.

    Evtl. solltest du über GRUB gleich in die richtge Auflösung booten. Dann muss softhddrm nichts umschalten. Ich vermute das das umschalten schief geht und dann die Framebuffer falsch sind. Dann fällt er beim kopieren in den Framebuffer hin..

    Edited once, last by jojo61 (February 7, 2025 at 4:06 PM).

  • Kann es ein das dein TV/Monitor kein 1920x1080x50 kann ? Zumindest scheint es nicht im EDID zu sein. Lass mal die -r 50 weg. Ist eh der default.

    Ausserdem lädst du das EDID aus einer Datei, passt das wirklich zu deinem TV ? Lass es mal mit dem EDID vom TV laufen, also kein EDIT bei booten laden.

    Doch, das kann er. In dem Fall hatte ich die -r 60 eingestellt. Ohne -r aber das gleiche Ergebnis.

    Ich habe mal mit dem Tool drm-framebuffer von hier https://github.com/embear-engineering/drm-framebuffer die Modes getestet.

    Wenn die edid geladen und die Auflösung in der Command line definiert wurden, zeigt es mir folgende Modi an die ich auch mit dem Tool testen konnte:

    #6 wäre dann der richtige Modus.

    Ohne edid und Einstellung in der Command line habe ich auch mit softhddrm probiert

    Mit dem Tool werden ohne edid dann noch die 4k Auflösungen angezeigt und könne getestet werden.

    Hier noch mal ein paar mehr Modes aus dem log wenn ich 1280x720 eingestellt habe:

    Aber auch hier Crash.

    Die edid habe ich direkt so kopiert:

    cp /sys/class/drm/card0-HDMI-A-1/edid /lib/firmware/edid/edid.bin und in die initrd aufgenommen.

    Die edid habe ich mal angehängt.

    Die Kernel Command-Line sieht so aus:

    Command line: BOOT_IMAGE=/boot/vmlinuz-6.13.1-gentoo root=UUID=4025591b-d405-4599-a3a4-971ea1ca37d7 ro net.ifnames=0 video=HDMI-A-1:1920x1080@50D drm.edid_firmware=HDMI-A-1:edid/edid.bin

    Die Einstellung wirkt auch.

    Wenn man ohne edid und video-Modus startet, hat die Framebuffer-Konsole die höchste Auflösung.

  • As I understand, in the case of drm -g does not work, and should not work, these are the parameters for the window in x11. For drm it is always displayed on the full screen and the resolution is set by the system parameters.

    Switching the mode via DRM does work.
    You can test this with the drm-frambuffer tool.
    I think jojo61 intended it that way in softhddrm.

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Evtl. solltest du über GRUB gleich in die richtge Auflösung booten. Dann muss softhddrm nichts umschalten. Ich vermute das das umschalten schief geht und dann die Framebuffer falsch sind. Dann fällt er beim kopieren in den Framebuffer hin..

    Das habe ich schon getan.

    gemäß RE: softhddrm Bild nur Streifen

    habe ich mit drm-output folgende Ausgabe:


    Im Unterschied zu dem verlinkten Beitrag, wird bei mir die edid nicht im [drm] Kontext geladen.

    So sieht das wohl bei cinfo aus:

    Das könnte am neueren Kernel bei mir liegen.

    Aber wiederholt geladen wird sie bei Ihm auch...

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

    Edited once, last by heifisch (February 7, 2025 at 7:49 PM).

  • Leider das gleiche Ergebnis.

    Hier der dmesg-Auszug mit Kernel command line:

    Hier der log-Auszug vom Start softhddrm bis zum Crash:

    Hier der Backtrace:

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Startet der Rechner denn nun mit 1920x1080x50 in die Konsole ? Das wird dir ja der Fernseher anzeigen können. Wenn ja dann kannst du das -g 1920x1080 weglassen. Wenn nicht dann musst du das zuerst lösen.

    Immerhin findet er nun einen EDID Eintrag mit 1920x1080x50.

  • Das blöde an dem Fernseher ist, dass er die Info über den Wert der Auflösung, die er zugespielt bekommt, nicht korrekt und zeitnah anzeigt.
    Ist eine ziemliche Enttäuschung bei dem teuren Teil Samsung (55" Flat QLED 4K Q9FN)...

    Kann man noch wo anders erkennen, welche Auflösung am HDMI-Anschluss raus geht?

    Ich denke aber, dass der Rechner mit der korrekten Auflösung startet, da die Schrift in der Konsole viel größer ist, als wenn ich ohne den Parameter video=HDMI-A-1:1920x1080@50D starte.

    Allerdings wenn ich den softhddrm Parameter -g 1920x1080 weg lasse, wird die Einstellung in der Kernel command line video=HDMI-A-1:1920x1080@50D ignoriert und softhddrm nutzt den ersten Mode den er findet, also Use Mode 0 3840x2160 Rate 60 und ich habe Bild. Beende ich den VDR, dann wird die Konsole wieder angezeigt, und Auflösung sieht wieder nach 1920x1080 aus.

    Hier das log zu dem Start:

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Mein Q55irgendwas zeigt bei ggf. mehrmaligem Druck auf "ok" bzw. den Zentralknopf der FB rechts oben im Bild die Auflösung/Frequenz usw. für einige Sekunden an.

    vdr User #2022 - hdvdr2:

    Lenovo SFF M83, Intel(R) Core(TM) i5-4670S, 32 GB Ram, zram-swap/tmp, ubuntu-focal+ESM, softhdcuvid, ffmpeg-6.1(git)

    ddbridge-6.5 mit 2xDVB-S2 und (Flex) 2xDVB-C/T Tunern, nvidia-GF1050Ti SFF (nvidia-dkms-570.124), System SSD btrfs,

    timeshift-btrfs, Video 8TB HDD XFS/cow, yavdr-ansible-2.7.3-seahawk, epgd-git mit plugins, Kernel 6.12.18+dddvb-0.9.41-git

    vdradmin-am-3.6.13-git, vdr-live-ng, vdrmanager (Smartphones als FB)

  • Mein Q55irgendwas zeigt bei ggf. mehrmaligem Druck auf "ok" bzw. den Zentralknopf der FB rechts oben im Bild die Auflösung/Frequenz usw. für einige Sekunden an.

    Ja, bei mir wird auch was angezeigt, dass stimmt nur nicht.
    Selbst wenn softhddrm mit 3840x2160 zuspielt, zeigte der Fernseher 1920x1080 an.
    Das ist leider nicht zuverlässig bei meinem Gerät...

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Ist schon alles etwas seltsam. Ich habe gerade nochmal in der Source nachgesehen und ja wenn er kein -g mitbekommt dann nimmt der den ersten edid Eintrag.

    Wenn du meinst das die Kosole auf 1920x1080 steht und ich trotz -g 1920x1080 umschalte auf 3840x2160 dann ist wirklich etwas faul. Die eizige Idee die ich im Moment noch habe das du dir eine Edid baust in der nur ein Eintrag ist 1920x1080x50.

    Das sollte mit einen Edid Editor wohl möglich sein. Oder das du zumindest die hohen Auflösunge aus dem edid.bin rauswirfst.

  • Die einzige Idee die ich im Moment noch habe das du dir eine Edid baust in der nur ein Eintrag ist 1920x1080x50.

    Das habe ich auch schon versucht, bringt aber auch nichts. Läuft in den gleichen Fehler.

    Ohne -g nimmt er die höchste Auflösung und mit -g gibt es den Crash.
    VDR 2.6.6 habe ich jetzt auch mal getestet mit dem gleichen Ergebnis.

    Was mir noch aufgefallen ist, ist dass sich der Inhalt von /sys/class/drm/card0-HDMI-A-1/modes nach dem Start von VDR mit softhddrm ändert.
    Nach dem Booten mit Kernel Parameter video=HDMI-A-1:1920x1080@50D sieht es so aus:

    Nach dem Start von VDR sieht es so aus:

    Irgend etwas macht softhddrm, dass die modes aktualisiert werden.

    Mein Gentoo-System ist sicher sehr individuell, aber was kann denn da anders sein, als bei Systemen wo softhddrm funktioniert?

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Ich hab mal versucht mehr Informationen über den Absturz zu bekommen , (ohne es zu verstehen):

    Der Segfault kommt bei Copy buffer to OutputFramebuffer

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Alles sehr sonderbar. Welchen Kernel nutzt du denn ? Meine Vermutung ist das die Umschaltung der Auflösung nicht klappt und dann der Framebuffer zu klein ist. Also wenn softhddrm denkt er hat einen 4k Framebuffer und entsprechend dahin kopieren will, dann crasht es wenn der Framebuffer aber nur 2k ist.

    Nimm mal den Kommenter in drm.c. in Zeile 286 raus. Also mache aus der Zeile ein: if (connector->connection == DRM_MODE_CONNECTED && connector->count_modes > 0) {

  • Hallo jojo61. Erstmal großen Dank, dass Du Dich dem Problem annimmst. Ich sehe, Dich treiben eigentlich gerade andere Projekte um.

    Welchen Kernel nutzt du denn ?

    Bisher getestet mit Kernel 6.13.1 und 6.6.74.
    Ich könnte z.B. noch mit Kernel 6.1.127, 5.15.177 und 5.10.233 testen.
    Könnte ich irgend etwas in der Kernel-config vergessen haben?

    Mit diesem Patch, immer noch Absturz:

    Das log dazu bringt natürlich keine Änderung, aber der Vollständigkeit halber:

    und der bt:

    Oder kann es etwas mit den Threads zu tun haben?

    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

  • Und hier noch mal mehr Debug-Ausgaben mit:


    Gentoo Linux ~ VDR 2.7.4 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ Asrock N100M ~ 16GB RAM ~ NVIDIA T1000 8G

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!