Photoshop 7 hat mein Linux versaut...?
$xNeTworKx
- software
0 Henryk Plötz0 $xNeTworKx0 Henryk Plötz0 $xNeTworKx
Hallo,
Ich habe gestern mit Hilfe von "crossXover Office" Photoshop 7 auf RH9 installiert. Nach dem ersten Start, als ich Photoshop beenden wollte, stürzte es ganz böse ab und lmule, der auf der selben Arbeitsoberfläche lief, lässt sich jetzt nicht mehr starten. In der KOnsole wird dabei "Speicherzugriffsfehler" angezeigt. Ich habe versucht cxoffice zu deinstallieren. Nutzte nichts. Das lmule Paket deinstallieren und wieder installieren, nutzte auch nichts. Desweiteren werden die versteckten Verzeichnisse ja gar nicht deinstalliert, wie ich bemerken musste.
Meine Fragen nun. Was hat dieser Speicherzugriffsfehler zu bedeuten und wie werd ich ihn wieder los? Neustarten usw hat nichts geholfen. Und 2. wie kann ich eigentlich Programme total deinstallieren?
$xNeTworKx.
Moin,
Desweiteren werden die versteckten Verzeichnisse ja gar nicht deinstalliert, wie ich bemerken musste.
Du meinst die in deinem Heimatverzeichnis? Das ist durchaus beabsichtigt, da dort ja meist persönliche Einstellungen liegen, die man sehr häufig nicht einfach verlieren will.
Vielleicht reicht es, wenn du diese Verzeichnisse von den betroffenen Programmen löscht (bzw. sicherer: umbenennen), so dass sie mit ihrer default-Konfiguration starten.
Meine Fragen nun. Was hat dieser Speicherzugriffsfehler zu bedeuten
Kann man so nicht sagen. Das kann eine defekte Konfiguration zusammen mit einem dafür anfälligen (== auch defekten) Programm sein, ein defektes Programm (zum Beispiel durch einen Fehler beim Download oder beim Programmierer) oder ein Hardwareproblem.
Probier mal (auf einer Kommadozeile)
gdb lmule[enter]
run[enter]
(oder wie immer man lmule startet, ggbf. musst du vorher gdb installieren)
und wie werd ich ihn wieder los?
Das kommt drauf an, wo der Fehler auftritt. gdb sollte dir das sagen können.
Und 2. wie kann ich eigentlich Programme total deinstallieren?
"Kommt drauf an"
Wenn du das Programm aus den Quellen kompiliert und installiert oder mit einem eigenen Installationsprogramm installiert hast, dann wende dich an die Dokumentation, ob eine Deinstallation vorgesehen ist. Wenn du es über einen Paketmanager (rpm/apt/Portage etc.) installiert hast, dann kannst du es in aller Regel auch darüber wieder sauber deinstallieren. (Deswegen will man eigentlich fast immer einen Paketmanager verwenden.)
Hallo,
danke erstmal. Ich habe jetzt mit gdb folgendes bekommen:
(gdb) run
Starting program: /usr/bin/lmule
(no debugging symbols found)...(no debugging symbols found)...[New Thread 1083404480 (LWP 5102)]
Initialising eMule
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1083404480 (LWP 5102)]
0x4207a6db in strlen () from /lib/tls/libc.so.6
Ist das nun ein Fehler? Wenn ja, wie kann ich ihn beheben?
$xNeTworKx.
Moin,
danke erstmal. Ich habe jetzt mit gdb folgendes bekommen:
(gdb) run
Starting program: /usr/bin/lmule
(no debugging symbols found)...(no debugging symbols found)...[New Thread 1083404480 (LWP 5102)]
Initialising eMuleProgram received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1083404480 (LWP 5102)]
0x4207a6db in strlen () from /lib/tls/libc.so.6
strlen ist eine Bibliotheksfunktion die die Länge eines Strings ausgibt, indem sie alle Zeichen bis zum ersten \0 zählt. Wenn es in dem für den String reservierten Speicher keine \0 gibt, liest strlen einfach weiter und womöglich über das Ende des zugewiesenen Speichers hinaus. Oder: Das Programm übergibt strlen gleich einen Zeiger auf einen Bereich der sonstwo liegt. Beides führt zu Speicherschutzverletzungen.
Was mich ein bisschen stutzig macht, ist, dass es da eine libc aus /lib/tls nimmt, meine (und die von jedem System das ich kenne) liegt unter /lib. Eventuell hast du kürzlich (womöglich unbewusst) eine andere libc installiert, die merkwürdige Sachen macht. Was sagt denn
/sbin/ldconfig -p | grep libc.so
dazu? Zu welchem Paket gehört diese Datei? (rpm -qf /lib/tls/libc.so.6) Vielleicht hilft es, dieses Paket noch einmal neu herunterzuladen und zu installieren (falls da irgendwie ein fehler reingekommen ist). Ist das Verzeichnis /lib/tls in /etc/ld.so.conf eingetragen?
Falls ja könnte es helfen es dort einmal auszukommentieren und dann ldconfig aufzurufen. !Vorsicht! Falls die Bibliotheken dort wichtig sind, könnte dass das System weitestgehend unbrauchbar machen. !Vorsicht!
Das ist jetzt aber alles nur im Trüben gefischt. Es kann auch sein, dass das bei dir so sein muß.
Hallo Henryk
Was sagt denn
/sbin/ldconfig -p | grep libc.so
dazu?
Ich bekomme folgende Meldung:
[xnetworkx@chello downloads]$ /sbin/ldconfig -p | grep libc.so
libc.so.6 (libc6, hwcap: 0x8000000000000000, OS ABI: Linux 2.4.20) => /lib/tls/libc.so.6
libc.so.6 (libc6, hwcap: 0x8000000000000, OS ABI: Linux 2.4.1) => /lib/i686/libc.so.6
libc.so.6 (libc6, OS ABI: Linux 2.2.5) => /lib/libc.so.6
Zu welchem Paket gehört diese Datei? (rpm -qf /lib/tls/libc.so.6)
glibc-2.3.2-27.9
Ich habe jetzt diese Paket nochmal wo heruntergeladen. Drüberinstallieren kann ich es nicht, weil er mir dann so eien Meldung ausgibt:
[xnetworkx@chello downloads]$ su -c "rpm -i glibc-2.3.2-27.9.i386.rpm"
Password:
package glibc-2.3.2-27.9 is already installed
file /lib/ld-2.3.2.so from install of glibc-2.3.2-27.9 conflicts with file from package glibc-2.3.2-27.9
Wenn ich das Paket deinstallieren will, bekomme ich wiederun so etwas:
/sbin/ldconfig is needed by (installed) SDL_image-1.2.2-5
/sbin/ldconfig is needed by (installed) Guppi-0.40.3-13
/sbin/ldconfig is needed by (installed) libgtop-1.0.12-17
.
.
.
Vielleicht hilft es, dieses Paket noch einmal neu herunterzuladen und zu installieren (falls da irgendwie ein fehler reingekommen ist). Ist das Verzeichnis /lib/tls in /etc/ld.so.conf eingetragen?
Das sind alle Einträge:
/usr/kerberos/lib
/usr/X11R6/lib
/usr/lib/sane
/usr/lib/qt-3.1/lib
/usr/lib/mysql
/usr/local/lib
$xNeTworKx.
Moin,
Zu welchem Paket gehört diese Datei? (rpm -qf /lib/tls/libc.so.6)
glibc-2.3.2-27.9
Ok, dann stimmt das wohl so. Nach längerem Googlen (die haben fast alle nur die Abkürzung verwendet) habe ich dann auch herausgefunden, dass tls hier für thread-local storage steht und das wohl so richtig ist.
Das bringt aber auch nicht die Lösung.
Ich habe jetzt diese Paket nochmal wo heruntergeladen. Drüberinstallieren kann ich es nicht, weil er mir dann so eien Meldung ausgibt:
Ist klar, du müsstest rpm mit -U statt -i (und eventuell noch --oldpackage) sagen, dass du updaten willst. Ich glaube aber eher nicht, dass das hier was nützt. (Lies: Probier' es gar nicht erst.)
Hast du schonmal versucht die Einstellungen von diesem lmule wegzuverschieben? Oder eventuell mal einen neuen frischen Benutzer anlegen und es als dieser versuchen.
Ansonsten fällt mir dazu auch nichts mehr ein. (Naja, ich würde jetzt die beteiligten Programme mit Debugging-Symbolen neu kompilieren, damit man auch sehen kann was da läuft und dann nochmal gdb drauf werfen.)
Hmm, vielleicht reicht es auch so: Starte nochmal gdb und darin das Programm und wenn der Absturz kommt lass' dir mit
bt[enter]
einen Backtrace ausgeben. Mit großer Wahrscheinlichkeit ist da der Aufruf von strlen kaputt und nicht strlen selber.
Hallo,
Hmm, vielleicht reicht es auch so: Starte nochmal gdb und darin das Programm und wenn der Absturz kommt lass' dir mit
bt[enter]
einen Backtrace ausgeben. Mit großer Wahrscheinlichkeit ist da der Aufruf von strlen kaputt und nicht strlen selber.
Es gibt folgendes aus, aber diese Ausgabe sagt mir irgendwie nicht viel:
(gdb) bt
#0 0x4207a6db in strlen () from /lib/tls/libc.so.6
#1 0x420477ed in vfprintf () from /lib/tls/libc.so.6
#2 0x4206a284 in vsnprintf () from /lib/tls/libc.so.6
#3 0x403784a0 in wxVLogWarning(char const*, char*) ()
from /usr/lib/libwx_gtk-2.4.so.0
#4 0x40378550 in wxLogWarning(char const*, ...) ()
from /usr/lib/libwx_gtk-2.4.so.0
#5 0x403f0e94 in wxMimeTypesManagerImpl::ReadMimeTypes(wxString const&) ()
from /usr/lib/libwx_gtk-2.4.so.0
#6 0x403eb5c6 in wxMimeTypesManagerImpl::GetMimeInfo(wxString const&) ()
from /usr/lib/libwx_gtk-2.4.so.0
#7 0x403eb069 in wxMimeTypesManagerImpl::Initialize(int, wxString const&) ()
from /usr/lib/libwx_gtk-2.4.so.0
#8 0x403ef71d in wxMimeTypesManagerImpl::GetFileTypeFromExtension(wxString const&) () from /usr/lib/libwx_gtk-2.4.so.0
#9 0x40384d80 in wxMimeTypesManager::GetFileTypeFromExtension(wxString const&)
() from /usr/lib/libwx_gtk-2.4.so.0
#10 0x403370ab in wxFileSystemHandler::GetMimeTypeFromExt(wxString const&) ()
from /usr/lib/libwx_gtk-2.4.so.0
#11 0x403425ae in wxMemoryFSHandler::OpenFile(wxFileSystem&, wxString const&)
() from /usr/lib/libwx_gtk-2.4.so.0
#12 0x40338a52 in wxFileSystem::OpenFile(wxString const&) ()
from /usr/lib/libwx_gtk-2.4.so.0
---Type <return> to continue, or q <return> to quit---
#13 0x0817e8b6 in wxTextCtrl::~wxTextCtrl() ()
#14 0x0817f88a in wxTextCtrl::~wxTextCtrl() ()
#15 0x0817de83 in wxTextCtrl::~wxTextCtrl() ()
#16 0x08117880 in wxImage::~wxImage() ()
#17 0x0812c576 in wxScrollEvent::~wxScrollEvent() ()
#18 0x0809c1ce in wxCommandEvent::~wxCommandEvent() ()
#19 0x08097259 in wxListItem::GetClassInfo() const ()
#20 0x40272a59 in wxEntry(int, char**) () from /usr/lib/libwx_gtk-2.4.so.0
#21 0x08095fb8 in wxListItem::GetClassInfo() const ()
#22 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6
Moin,
Es gibt folgendes aus, aber diese Ausgabe sagt mir irgendwie nicht viel:
Der Fehler tritt also in wxGTK auf. (Aus den Funktionsnamen ins Blaue geraten: Er will eine Datei öffnen, will dazu den Mime-Type bestimmen, muß dazu einen Mime-Typ-Manager starten, der beim Lesen der Mime-Typen eine Warnung loggen will, und dabei geht irgendwas schief.)
wxGTK ist laut meinem Paketmanager die "GTK+ version of wxWindows, a cross-platform C++ GUI toolkit". Das riecht also tatsächlich so, als könnte das crossover etwas damit zu tun haben. Blöderweise werden bei dir die an die Funktionen übergebenen Parameter im Backtrace nicht ausgegeben (da keine Debuggingsymbole drin sind), da könnte man sonst auf den Fehler draus schließen. (Naja, das Standardvorgehen wxGTK zu de- und anschließend zu reinstallieren könnte(!) funktionieren.)
Probier' mal
strace -ff -o lmule-strace lmule
Das schreibt furchtbar viele Daten in Dateien deren Namen mit lmule-strace beginnen und dokumentiert dort alle Systemaufrufe mit ihren Parametern. Mit viel Glück ist die Fehlermeldung die lmule ausgeben will da irgendwo am Ende dabei und man kann herausfinden was es bemängelt und das dann korrigieren. So richtig toll ist das aber auch nicht.
Hallo,
Ok danke, ich werde es dann gleich ausprobieren.
$xNeTworKx.