Erstellt vor 10 Monaten

Geschlossen vor 5 Monaten

#2948 closed defect (fixed)

HPLIP Build Fehler und core & SEGMENTATION FAULT

Erstellt von: walter Verantwortlicher:
Priorität: normal Meilenstein: freetz-next
Komponente: build-system Version: devel
Stichworte: HPLIB Beobachter:
Product Id: 7270 Firmware Version: 54.06.06

Beschreibung

Beim Compilieren des aktuellen Trunks 14579 mit Fritzbox 7270 und ausgewähten hp-utils und DESKJET F300 scheitert der build mit Fehler:
io/hpmud/musb.h:33:20: fatal error: libusb.h: No such file or directory

Wenn man libusb.h (von source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/libusb1-1.0.21/libusb/libusb.h) nach libusb.h in io/hpmud linkt, kann man compilieren, aber auf der Box wird bei eingeschlatetem Drucker ein Segmentation fault gemeldet
hp-probe Copyright © 2008 Michael Denk
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see COPYING file for more details.

HP Deskjet F300 series (hp:/usb/Deskjet_F300_series?serial=CN63VB312Y04KH)
Segmentation fault

Bei ausgeschaltetem Drucker gibt es keine Fehlermeldung.
Drucken und Scannen geht (Nur die Statusseite natürlich nicht → I/O Error)

PS: Auch die aktuellen HP Tools liefern diesen Fehler

Anhänge (1)

punktconfig (82.5 KB) - hinzugefügt von walter vor 10 Monaten.
.config

Alle Anhänge herunterladen als: .zip

Änderungshistorie (13)

Geändert vor 10 Monaten durch walter

.config

comment:1 Geändert vor 10 Monaten durch f_666

Ging es vorher bzw. ab wann ging es nicht mehr?

comment:2 Geändert vor 10 Monaten durch walter

Vielen Dank für die schnelle Antwort.
Bisher hatte ich freetz auf dieser Box nicht im Einsatz, von daher weiss ich nicht, wann es ging. Die Versionen 1.2. und 2.0 scheitern beim Make schon viel früher, da da schon das Image bei AVM nicht (mehr) gefunden wird.

comment:3 Geändert vor 10 Monaten durch Whoopie

  • Zusammenfassung von HPLIB Build Fehler und core & SEGMENTATION FAULT nach HPLIP Build Fehler und core & SEGMENTATION FAULT geändert

comment:4 Geändert vor 10 Monaten durch Whoopie

Was ist die "aktuelle" HP Tools Version? Was sind überhaupt die HP Tools? Wir haben hp-utils und hplip im Repository.

Welche Versionen 1.2 und 2.0 sind gemeint, ich nehme mal Freetz 1.2 und 2.0 an?

Zuletzt geändert vor 10 Monaten von Whoopie (vorher) (Diff)

comment:5 Geändert vor 10 Monaten durch walter

Moin,
sorry für die Verwirrung:
Ich meinte die HP-Lib und die hp-utils:
Vielleicht noch einmal ausführlich:
Wenn man ein aktuelles UBUNTU (16.04) verwendet und den aktuellen trunk, dann findet er die libusb.h nicht, wenn man nach "make menuconfig" "make" laufen läßt.
Dasselbe Ergebnis mit der freetz Virtual VM Freetz-Linux-1.4.1

Ich hatte dann libusb.h nach io/hpmud gelinkt. Dann kompiliert er, d.h. "make" geht durch und erzeugt ein image, aber es gibt dann auf der Box nach dem Einspielen den Segmentation fault.

Ich habe dann die aktuelle Version der HPLIB von https://sourceforge.net/projects/hplip/files/hplip/3.17.11/
geholt, diese entpackt und im svn tree unter
../source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/hplib-3-14-6
eingehängt, weil ich dachte, es liegt vielleicht an der HPLIB Version.
(Die obige Version der HPLIB ist 3.17.11)
Tat es aber nicht.
Das Ergebnis war wie oben, d.h. erst libusb.h nicht gefunden. Nach dem Erzeugen des symbolischen Links kompilierte es, d.h. "make" ging durch das image wurde erzeugt, aber auf der Box gab es wieder einen Segmentation fault.

Mit den Versionen meinte ich in der Tat die Freetz-stable-1.2 und Freetz-stable-2.0 Branches.

Zum Reproduzieren des ersten Fehlers, sollte es reichen, "make" mit der der beigefügten config durchlaufen zu lassen.

Der Segmentation fault scheint mir etwas schwieriger reproduzierbar zu sein, da man dazu vermutlich die Hardware braucht (Ohne eingeschalteten Drucker gibt es ja keinen Fehler)

Ein Hinweis, in welcher Datei man angeben muss, wo die libusb.h. liegt würde mir eventuell auch schon weiterhelfen, da ich dann den entsprechenden Schritt einmal "per Hand" auf dem Ubuntu durchführen kann. Möglicherweise reicht es nicht einfach "nur" das Header file einzulesen. Eventuell braucht der Linker auch die kompilierte libusb Bibliothek?
Eine entsprechende Meldung ist mir aber nicht aufgefallen.

Hoffe, das hilft etwas und vielen Dank

comment:6 Geändert vor 10 Monaten durch Whoopie

Lösch mal die source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/config.cache und danach make hplip-distclean und make hplip-precompiled. Läuft's dann durch, ohne die libusb.h kopieren zu müssen?

comment:7 Geändert vor 10 Monaten durch walter

Vielen Dank. Leider dasselbe Ergebnis.

make hplip-distclean liefert
Build failed Datei oder Verzeichnis nicht gefunden: ...hplip-3.14.16.
Das sollte aber ok sein?!

make hplip-precompiled liefert leider wieder
io/hpmud/musb.h:22:20:fatal error: libusb.h No such file ...

comment:8 Geändert vor 10 Monaten durch walter

Das Folgende ist nicht ideal, aber es funktioniert für mich:
Den Build Fehler kann man wie folgt umgehen:
in io/hpmud/musb.h Zeile 33

33c33
< #include <libusb.h>
---
> #include <libusb-1.0/libusb.h>

Damit geht make hplip-precompiled durch.

Leider gibt es dann auf der Box nach wie vor den "Segmentation fault".
Dieser entsteht in device.c aus den hp-utils in der Funktion device_free. Durch ein return in Zeile 52 kann man das beseitigen.

52a53,58
> 	/* This code causes a segmentation fault.
> 	/  Simply returning causes a memory leak, but at least it works
> 	/  Note: Memory should be returned when process ends
> 	*/
> 	return;
> 

Damit geht dann das Web-interface in der Fritzbox, sowie Drucken und Scannen.
hp-status ohne Angabe des Devices liefert zwar dann immer noch einen "Segmentation fault", aber mit Angabe des Devices geht es. Vermutlich macht hier der Code weiter unten in device_get_device Probleme

for (i = 1, device = devices; device != NULL; i++, device = device->next) {
                printf("%2d. %s (%s)\n", i, device->model, device->uri);
        }

… da bin ich aber nicht weiter ins Detail gegangen, da ich nur ein Multifunktionsgerät (HP DJ F300) angeschlossen habe.

PS: Beide Änderungen beseitigen nicht wirklich das Problem, aber zumindest geht es so und vielleicht kann jmd. der den Code besser kennt hier eine "richtige" Lösung beisteuern

comment:9 Geändert vor 6 Monaten durch Whoopie

In 14615:

hplip: fix build issue (refs #2948)

comment:10 Geändert vor 6 Monaten durch Whoopie

@walter: Dein Fix ist schon richtig und "sauber", siehe z.B. auch https://forum.openwrt.org/viewtopic.php?id=44872

Hab ihn mal eingecheckt.

comment:11 Geändert vor 6 Monaten durch walter

@Whoopie Herzlichen Dank!

PS: Bisher mit den o.h. beiden Änderungen keine weiteren Probleme im Betrieb.

comment:12 Geändert vor 5 Monaten durch er13

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.