Page MenuHome

Bundled Python multiprocessing module mistakenly starts additional Blender instances
Closed, ArchivedPublic


System Information
ArchLinux, integrated Intel graphics

Blender Version
Broken: 2.79b

Short description of error
When SemaphoreTracker.ensure_running() from blender-2.79b-linux-glibc219-x86_64/2.79/python/lib/python3.5/multiprocessing/ is executed it runs another Blender instance with arguments -c from multiprocessing.semaphore_tracker import main;main(9) by mistake.

As I understand it intended to run another Python instance. It gets the executable path from spawn.get_executable(), which turns out to be Blender in our case.

Exact steps for others to reproduce the error
I encountered it in a very special case:

  • installed pip into bundled blender python
  • installed sklearn
  • run from sklearn.linear_model import LinearRegression in Python console

(of course, if it's the only way to reproduce it then it's too minor issue to care about, but I guess it could appear in other scenarios as well)

Somehow it calls SemaphoreTracker.ensure_running() inside and it starts additional blender instance on a file from multiprocessing.semaphore_tracker import main;main(%d) with the following logs:

unknown argument, loading as file: -c
Error: Cannot read file '/home/azymohliad/-c': No such file or directory
... opened default scene instead; saving will write to /home/azymohliad/-c
Error: Cannot read file '/home/azymohliad/from multiprocessing.semaphore_tracker import main;main(9)': No such file or directory
... opened default scene instead; saving will write to /home/azymohliad/from multiprocessing.semaphore_tracker import main;main(9)

If I modify exe = spawn.get_executable() in python/lib/python3.5/multiprocessing/ to a path to actual python binary it works fine. Not sure if there are similar things in other places.

Not sure, if this is the right place to report it and what is the right way to approach it, as it comes from Python standard library, so even if it would be patched in a release here, it won't be fixed for distro packages, which uses system Python. But I hope people here know better.