Ticket #1241 (new bug)

Opened 22 months ago

Last modified 21 months ago

Executing long-running python scripts hang the orange-canvas UI

Reported by: ubershmekel Owned by:
Milestone: Component: canvas
Severity: major Keywords:
Cc: Blocking:
Blocked By:

Description

Steps to reproduce:

Add a python script node with:

while True:
    pass

Now try to move the node in the canvas.

I'd suggest running every such codebyte in a separate thead or process. A different process would be nice because that way exit() won't kill orange-canvas. If this would cause too much overhead for data transfer then the thread option has another problem:

E.g. try to use this python node:

import thread
def func():
    print(123)
    thread.start_new_thread(func, ())

But nothing is printed! See this error:

Calling <function write at 0x9b24d4c> with ('123',) {} from the wrong thread. Queuing the call!
Calling <function write at 0x9b24d4c> with ('\n',) {} from the wrong thread. Queuing the call!

So something went wrong in the queuing I guess.

Change History

comment:1 Changed 21 months ago by ubershmekel

  • Severity changed from minor to major

I tried loading orange with a not small data set (250,000 rows, 30 columns) from a .tab file and it completely broke down. I couldn't close the file loading dialog and there's no indication whether it's stuck temporarily or forever. After a few minutes the process was stuck at 700MB memory usage and 100% cpu. So I gave up and killed it.

I believe orange should keep the data stored and processed in one process and the GUI in another. That way there GUI will always be responsive. Also, there should always be an indication of what's orange doing now (e.g. in the bottom status bar).

Version 0, edited 21 months ago by ubershmekel (next)
Note: See TracTickets for help on using tickets.