Hallo,
ist hier in der Runde jemand, der sich mehr mit Wine beschäftigt hat?
Wir haben hier beim Beenden eines Programmes in Wine folgendes im Log:
wine: Unhandled page fault on read access to 0x00000000 at address \ 0x0000:0x0090f866 (thread 0020), starting debugger...
Es gibt dazu einige Einträge, oft bezogen auf den versuchten Start eines Programmes mit Wine.
Was der Text mir sagen soll, ist in etwa klar - es wird ein 0-Pointer derefenziert zum Lesen. Für mich wichtiger wäre die Information, ob jemand mit Gewissheit sagen kann, wo die Ursache liegt: Bugs in Wine, Bugs in der Anwendung? Kann man mit der Thread-ID etwas anfangen oder aus der referenzierenden Adresse etwas ableiten?
Unter Windows läuft das Programm und läßt sich beenden. Nach dem obigen Text im Log muß man den Wine-Prozess killen, oder er bleibt als Zombie und das Fenster ist noch da. Das habe ich nicht so genau beobachtet und kann es gerade jetzt nicht nachprüfen.
Es ist etwas in Delphi geschriebenes. Kann man da überhaupt 0-Pointer dereferenzieren?
Für zielführende Hinweise wäre ich dankbar.
Hallo Heiko,
On 28.03.2013 15:17, Heiko Schlittermann wrote:
Wir haben hier beim Beenden eines Programmes in Wine folgendes im Log:
wine: Unhandled page fault on read access to 0x00000000 at address \ 0x0000:0x0090f866 (thread 0020), starting debugger...
Es gibt dazu einige Einträge, oft bezogen auf den versuchten Start eines Programmes mit Wine.
Was der Text mir sagen soll, ist in etwa klar - es wird ein 0-Pointer derefenziert zum Lesen. Für mich wichtiger wäre die Information, ob jemand mit Gewissheit sagen kann, wo die Ursache liegt: Bugs in Wine, Bugs in der Anwendung? Kann man mit der Thread-ID etwas anfangen oder aus der referenzierenden Adresse etwas ableiten?
Folgende Punkte sind noch von Interesse: 1. wine --version (sollte neuer als 1.5 sein, optimal 1.5.26) 2. Hast du evtl. einen "backtrace" oder erscheint bei dir der Crash-Dialog? 3. Was genau macht die App (um einzugrenzen, wo der Fehler sein könnte, z.B. 3D-Grafik ...)? (Gibt es evtl. eine Demo-Version davon?)
Kannst du für den Anfang eine Log-Datei für die Anwendung erstellen (http://wiki.winehq.org/FAQ#head-525985fc2b5c9dcaed99a4701b949ee1ee7bafd3)? Mit etwas Glück sind darin alle nötigen Informationen vorhanden. Achte darauf, dass vorm Start noch keine andere Wine-Anwendung läuft. Sollten die Informationen immer noch etwas dürftig sein, kannst du es mal mit "WINEDEBUG=+tid,+seh wine app.exe" probieren.
Evtl. hilft dir "winedbg" ( http://www.winehq.org/docs/winedev-guide/dbg-commands ) weiter, da könntest du zumindest zu dem Thread die Informationen finden (Achtung: Thread-ID kann sich ändern) - dies musst du aber vermutlich vorm Programmabsturz machen (mit: "info thread").
Viele Grüße Rico
Hallo Rico,
Rico Schüller kgbricola@web.de (Do 28 Mär 2013 16:29:54 CET): …
Folgende Punkte sind noch von Interesse:
- wine --version (sollte neuer als 1.5 sein, optimal 1.5.26)
- Hast du evtl. einen "backtrace" oder erscheint bei dir der Crash-Dialog?
- Was genau macht die App (um einzugrenzen, wo der Fehler sein
könnte, z.B. 3D-Grafik ...)? (Gibt es evtl. eine Demo-Version davon?)
…
Ich gebe das mal weiter und melde mich vermutlich erst wieder nach dem 8.4., bin erstmal eine Woche im off.
Hallo,
Am 28.03.2013 15:17, schrieb Heiko Schlittermann:
Es ist etwas in Delphi geschriebenes. Kann man da überhaupt 0-Pointer dereferenzieren?
Ja.
var p: ^Integer; begin p := nil; p^ = 1; end;
Oder so (habe gerade keienen Compiler zur Hand).
Der Unterschied zwischen den Sprachen liegt nur darin, wie man damit umgeht. In Java fängt man z.B. sowas meist irgendwo ab (ZPE), druckt nen Stack-Trace und geht zur Tagesordnung über. In den C-Sprachen fängt man das typischerweise nicht ab und der Prozess wird beendet.
Tobias
Hallo Tobias,
Tobias Schlemmer keinstein_junior@gmx.net (Do 28 Mär 2013 17:13:12 CET):
Hallo,
Am 28.03.2013 15:17, schrieb Heiko Schlittermann:
Es ist etwas in Delphi geschriebenes. Kann man da überhaupt 0-Pointer dereferenzieren?
var p: ^Integer; begin p := nil; p^ = 1; end;
Oder so (habe gerade keienen Compiler zur Hand).
Aha - wird das dann von irgendeiner Runtime-Unterstützung abgefangen, oder kracht es einfach ganz hart in der Speicherverwaltung? Hat Delphi überhaupt eine Runtime-Unterstützung (ich meine, bei Turbo-Pascal war das doch so ähnlich, oder?)
Ist aber jetzt auch nicht wirklich wichtig, zerbrecht euch also bitte nicht den Kopf darüber.
Hej Heiko!
Mal ein paar Grob-Erfahrungen zu Wine, was man von Wine erwarten kann oder auch nicht:
Ich nutz Wine hin und wieder für irgendwelche 'Kleinprogramme' (Menü auf Uralt-CD-ROM, selbstentpackende .exe, ...) oder in nostalgischen Momenten für ältere Spiele. Grundsätzlich gibt es da immer mal Wine-Messages. Oft funktionieren die Programme trotzdem ohne große Einschränkungen.
Mir sind am häufigsten Meldungen begegnet, die auf die (den Entwicklern bewusste und antizipierte) Unvollkommenheit von Wine hindeuten: kennt irgendwas nicht, irgendwas ist nicht fertig implementiert, etc.
Aus dieser Erfahrung heraus würde ich sehr stark dazu tendieren, dass das ein Wine-Problem ist. (Wozu auch bestens passt, dass das Programm unter Windows fehlerfrei läuft.)
Wine wird aktiv weiterentwickelt. Sowas ändert sich daher übrigens auch immer mal von Version zu Version und in nicht immer nachvollziehbarer Relation zu verwendeten Libaries. Ein und die selbe Anwendung kann mal unter Distri A wunderbar im Wine laufen, in Distri B bei gleicher Wine-Version ohne funktionierenden Sound daherkommen und bei Distri C mit einer Minor-Version drunter oder drüber gar nicht laufen. Unabhängig davon erfordert Debuggen recht genaue Kenntnisse über Windows-APIs.
Auch stürzen Programme im Wine durchaus mal unvermittelt ab (Spiele, mit denen ich früher sehr viel deutlich mehr Zeit verbracht habe und bei denen ich mich unter Windows an keinen einzigen Absturz erinnern kann).
Mein persönliches Wine-Fazit: Mit Glitches ist immer zu rechnen. Solange man Probleme im Zweifelsfall hinterher bemerkt (z.B. Prüfsummenfehler beim Entpacker) ist das immer noch entspannter als Extra Windows zu booten/VM aufzusetzen. Felsenfest auf Wine vertrauen würde ich nicht (geschäftsrelevante Fachanwendungen würde ich damit kaum betreiben; ausgenommen Kleinkram, bei dem ich Fehler ggf. sofort bemerke und ich nicht lange Arbeitsschritte nachholen muss).
Beste Grüße Fabian
Hallo Rico und Fabian,
Danke für die Rückmeldungen. Ich denke, es ist bereits Bewegung in die Sache gekommen und das passiert, was passieren sollte - direkter Kontakt zwischen jemandem der sich auskennt und dem, der das Problem hat.
lug-dd@mailman.schlittermann.de