Hi,
I can tell you two things from what I understand of Spyder internals:
1. Using the thread ids you reported, the monitor thread has to be
either "Thread 64" or "Thread 63". 66 and 62 are definitely not it
because they are used for other purposes.
2. See this link
http://code.google.com/p/spyderlib/issues/detail?id=991#c7
for a thorough discussion of how Spyder monitor works (it's related to
our debugging facilities but it could be quite useful to understand your
problem better).
Cheers,
Carlos
El 23/12/13 00:11, Hubert C escribió:
When I open Spyder, load one of my scripts, highlight the line "import
my_module" and click 'execute selection', Spyder will freeze.
I used GDB to get the call stack of the thread that's hanging:
Thread 1 (python) at "0x7ffff7fd3740"
<module> (Python IDE/bootstrap.py)
main (spyderlib/start_app.py)
main (spyderlib/spyder.py)
run_spyder (spyderlib/spyder.py)
focusInEvent (sourcecode/base.py)
<lambda> (plugins/externalconsole.py)
plugin_focus_changed (spyderlib/spyder.py)
set_shellwidget_from_id (plugins/variableexplorer.py)
visibility_changed (externalshell/namespacebrowser.py)
refresh_table (externalshell/namespacebrowser.py)
communicate (utils/bsdsocket.py)
read_packet (utils/bsdsocket.py)
temp_fail_retry (utils/bsdsocket.py)
I can tell that after I execute the import statement, Spyder is trying
to update the variable explorer with the refresh_table() function. It
sends the command "refresh()" to the monitor's introspection thread
through a socket and then waits for a reply and that's where it gets
stuck. It's just waiting forever for a response to come back through
the socket from the monitor, but the monitor is not replying.
I'm having a hard time figuring out if 1) the monitor crashed and the
thread closed 2) the monitor doesn't reply because it's hung somewhere
or 3) some other socket timing issue.
There are 4 other threads running with the following call stacks (Not
sure which one, if any, is the monitor thread):
Thread 66 (NotificationThr) at "0x7fff53a31700" in recv(...)
run (externalshell/introspection.py)
read_packet (utils/bsdsocket.py)
temp_fail_retry (utils/bsdsocket.py)
-----------------------------------------------------------
Thread 64 (python) at "0x7fff8154a700" in accept(...)
__bootstrap (python2.7/threading.py)
__bootstrap_inner (python2.7/threading.py)
run (externalshell/introspection.py)
accept (python2.7/socket.py)
-----------------------------------------------------------
Thread 63 (python) at "0x7fff81d4b700" in accept(...)
__bootstrap (python2.7/threading.py)
__bootstrap_inner (python2.7/threading.py)
run (externalshell/introspection.py)
accept (python2.7/socket.py)
-----------------------------------------------------------
Thread 62 (python) at "0x7fff8254c700" in accept(...)
__bootstrap (python2.7/threading.py)
__bootstrap_inner (python2.7/threading.py)
run (python2.7/threading.py)
start_open_files_server (spyderlib/spyder.py)
accept (python2.7/socket.py)
This is a really tough problem to debug. Does anyone know how I could
tell which thread is the monitor's introspection thread? GDB gives me
a thread ID, which as far as I can tell is a number created by GDB
itself. I tried printing the result of
id(threading.get_current_thread()) to try to match up the thread's
address with the address supplied by GDB, but none of them match, so I
can't tell which thread is which. I know Spyder has an introspection
thread, a notification thread, the main console thread.
FYI, I'm running on Linux Mint. I made a bunch of changes to the
source code in an effort to make it more like PyScripter, so I don't
want to report this as a bug until I find the reason it's hanging.
--
You received this message because you are subscribed to the Google
Groups "spyder" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/spyderlib.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups
"spyder" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/spyderlib.
For more options, visit https://groups.google.com/groups/opt_out.