Thanks, it looks like that thread was discussing the exact same problem. I have the same issues with the debugger that were mentioned. Good to know the cause and see some potential fixes...
On Sunday, December 22, 2013 9:11:54 PM UTC-8, Hubert C wrote: > > 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.
