Seite 1 von 1

Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 17:18
von Alfons Mittelmeyer
Habe Tcl/Tk from Source installiert. Und damit läuft jetzt auch tkinter. Aber wenn ich in irgendeinem anderen Thread nur das Geringste tue - da reicht bereits eine Konsoleneingabe mit input, dann crasht Tcl bereits:

Code: Alles auswählen

error in background error handler:
out of stack space (infinite loop?)
    while executing
"::tcl::Bgerror {out of stack space (infinite loop?)} {-code 1 -level 0 -errorcode NONE -errorinfo {out of stack space (infinite loop?)
    ("after" sc..."

Normalerweise sollte ja die Standardkonfiguration multithreaded sein.
Muss ich da etwas bei der Konfiguration berücksichtigen?

Nö, selber Fehler gemacht, Standard ist shared und nicht multithreaded

Aber da bekomme ich wieder eine Fehlermeldung:

Code: Alles auswählen

/usr/bin/ld: error: hidden symbol 'TclpThreadGetStackSize' is not defined locally

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 18:09
von jerch
Erster Fehler ist ein Stacküberlauf, vmtl. ruft sich der error handler rekursiv auf.

Zweiter Fehler klingt nach fehlendem Threadsupport.

Was zur besseren Problemabschätzung helfen könnte - minimales lauffähiges Bsp., bei welchem Dein Kompilat baden geht, hier posten, nicht nur die kryptischen Fehlermeldungen.

Wenn mich nicht alles täuscht, hat Tk Probleme mit multithreading.

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 18:48
von Alfons Mittelmeyer
@jerch Nein tcl hat keine Probleme mit multithreading. Wenn ich es mit multithreading konfiguriere ./configure --enable-threads, dann findet der Compiler auf meinem System nicht 'TclpThreadGetStackSize'.
Das sollte eigentlich /usr/bin/ld liefern. Aber auf manchen Unix Systemen wurde diese Angabe beseitigt und tcl will sie haben. Da gab es mal die Anweisung, das zu beseitigen. Aber anscheinend ist man davon bei tcl wieder abgekommen.

Und ich habe auf meinem MK808B Rechner kein Ubuntu, sondern ein abgespecktes Picuntu. Dann muss ich eben auf Multithreading mit tkinter auf diesem System verzichten. Und wenn ich mit Multithreading etwas machen will, nimm ich eben meinen PC.

Aber immerhin habe ich auf diesem Rechner jetzt auch tkinter:
Bild
Weißt Du, mit diesem Rechner arbeite ich lieber als mit dem PC. Ist vollkommen lautlos, braucht wenig Strom und hat ein gutes Bild über HDMI, während mein PC noch über RGB geht.
Hauptspeicher haben meine Rechner gleich viel, nämlich 1GB.

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 18:58
von jerch
Hast Du die Lib mit -pthread gelinkt?

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 19:03
von Alfons Mittelmeyer
jerch hat geschrieben:Hast Du die Lib mit -lpthread gelinkt?
Nö, wie muss ich das machen? Mit make? Und welche Lib?

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 19:07
von jerch
Du musst doch irgendwie die shared libs für tcl, tk und tkinter gebaut haben. Wie hast Du das denn gemacht?

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 19:13
von Alfons Mittelmeyer
jerch hat geschrieben:Du musst doch irgendwie die shared libs für tcl, tk und tkinter gebaut haben. Wie hast Du das denn gemacht?
Naja, ich habe aufgerufen für tcl:

./configure
make
sudo make install

Und für tk:

./configure
make
make test
sudo make install

Und auf diese Art und Weise habe ich dann auch Python neu installiert and dabei aber angegeben:

./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,--rpath=/usr/local/lib"

Ohne diese Angabe hätte python nicht in das richtige Verzeichnis für die libs geschaut.

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 19:25
von jerch
Also hast Du keine shared oder threaded Schalter gesetzt? Da hast Du Tcl wahrscheinlich single threaded standalone gebaut.

Evtl. hilft es im python-tk Debianpaket zu schauen, wie die flags der Buildschritte genau sein müssen.

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 19:29
von Alfons Mittelmeyer
jerch hat geschrieben:Also hast Du keine shared oder threaded Schalter gesetzt? Da hast Du Tcl wahrscheinlich single threaded standalone gebaut.
Nö shared ist default. Mit nicht threaded funktioniert es auch - allerdings kann ich dann keine Threads verwenden, wenn ich tkinter verwende

Aber wenn ich konfiguriere: ./configure --enable-threads

Dann geht der nachfolgende make schief, weil er TclpThreadGetStackSize nicht findet

Ich weiss auch nicht, warum das überhaupt noch in der Source für tcl8.15 drin ist, sollte normalerweise schon 2008 herausgeworfen worden sein: http://www.rkeene.org/projects/tcl/tcl. ... b63a?sbs=0

Vielleich muss ich das dann manuell aus den Sourcen rauswerfen?

Re: Tcl Crash bei Aktion in anderem Thread

Verfasst: Dienstag 8. September 2015, 21:46
von Alfons Mittelmeyer
Problem gelöst.

Hab tcl/tk 8.6.4 installiert und jetzt geht das auch mit Threads