Page MenuHome

Crash during autocompletion in PyConsole (Linux Library Compatibility)
Closed, ResolvedPublic

Description

System Information
Ubuntu 14.04 x86 with Linux kernel 3.11.0-17

Blender Version
Broken: starting with Blender 2.71
Bug not reproduced on Blender older than 2.70 and on x86_64 Linux system

Short description of error
After pressing Autocompletion button or "Ctrl+Space" shortcut in blender Python Console, Blender immediately crashed

Exact steps for others to reproduce the error

  1. Open blender
  2. Switch to Python Console window
  3. Write "bpy." and press "Autocompletion" button or "Ctrl+Space" shortcut and Blender immediately crashed.

Event Timeline

my369@yandex.ru (acvarium) raised the priority of this task from to 90.
my369@yandex.ru (acvarium) updated the task description. (Show Details)
my369@yandex.ru (acvarium) edited a custom field.

I cannot reproduce this here (Mint 17 64 bits, latest head) with either a debug or release build.

I have written: "Bug not reproduced on Blender older than 2.70 and on x86_64 Linux system"
It means, bug not reproduced on 64 bit system

Oops, I misread the report :), I'll try and check on my 32-bit laptop.

Could you test with 2.73a?

Already tested. Bug reproduced in blender in versions from 2.71 to 2.73a on 32 bit Ubuntu 14.04

Aaron Carlisle (Blendify) lowered the priority of this task from 90 to Normal.Feb 1 2015, 8:23 PM

System:
Description: Debian GNU/Linux 8.0 (jessie)
Release: 8.0

Linux flybook 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt2-1 (2014-12-08) x86_64 GNU/Linux

Autocomplete crashes with 2.72 and 2.73a, all binaries from official repo.
It also crashed with 2 feb 2015 dailybuild named blender-2.73-0305b20-linux-glibc211-x86_64.

Only Blender 2.70 works with autocomplete feature.

Is there any compilation workaround for 2.72 / 2.73 ?

In stdout I can read "Segmentation error".

Here is the crash log:

# Blender 2.72 (sub 0), Commit date: 1970-01-01 00:00, Hash unknown

# backtrace
blender() [0x901818]
/lib/x86_64-linux-gnu/libc.so.6(+0x35180) [0x7f997f73c180]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyModule_GetState+0xb) [0x7f9985fda4eb]
/usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so(+0x3984) [0x7f9960174984]
/usr/lib/x86_64-linux-gnu/libedit.so.2(rl_initialize+0x2d1) [0x7f9961912d51]
/usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so(+0x2b9d) [0x7f9960173b9d]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(_PyImport_LoadDynamicModule+0x113) [0x7f99860cbcd3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0x199f35) [0x7f99860cbf35]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x58d5) [0x7f998611bc85]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x6071) [0x7f998611c421]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0xd90e6) [0x7f998600b0e6]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0xfa3) [0x7f9986117353]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x6071) [0x7f998611c421]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0xd8ff9) [0x7f998600aff9]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(_PyObject_CallMethodIdObjArgs+0x15f) [0x7f99860bd34f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevelObject+0x7f4) [0x7f99860cb474]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevel+0x39) [0x7f99860cb859]
blender() [0xcfae72]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_CallObjectWithKeywords+0x47) [0x7f9986115787]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x279f) [0x7f9986118b4f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCode+0x1b) [0x7f998611eb4b]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0x229cd5) [0x7f998615bcd5]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x58d5) [0x7f998611bc85]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x6071) [0x7f998611c421]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0xd8ff9) [0x7f998600aff9]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(_PyObject_CallMethodIdObjArgs+0x15f) [0x7f99860bd34f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevelObject+0x7f4) [0x7f99860cb474]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevel+0x39) [0x7f99860cb859]
blender() [0xcfae72]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_CallObjectWithKeywords+0x47) [0x7f9986115787]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x279f) [0x7f9986118b4f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCode+0x1b) [0x7f998611eb4b]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0x229cd5) [0x7f998615bcd5]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x58d5) [0x7f998611bc85]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x6071) [0x7f998611c421]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0xd8ff9) [0x7f998600aff9]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(_PyObject_CallMethodIdObjArgs+0x15f) [0x7f99860bd34f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevelObject+0x7f4) [0x7f99860cb474]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevel+0x39) [0x7f99860cb859]
blender() [0xcfae72]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x58d5) [0x7f998611bc85]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x6071) [0x7f998611c421]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0xd8ff9) [0x7f998600aff9]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(_PyObject_CallMethodIdObjArgs+0x15f) [0x7f99860bd34f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevelObject+0x6ad) [0x7f99860cb32d]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyImport_ImportModuleLevel+0x39) [0x7f99860cb859]
blender() [0xcfae72]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_CallObjectWithKeywords+0x47) [0x7f9986115787]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x279f) [0x7f9986118b4f]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x6071) [0x7f998611c421]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalFrameEx+0x685c) [0x7f998611cc0c]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyEval_EvalCodeEx+0x883) [0x7f998611eaa3]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(+0xd8ff9) [0x7f998600aff9]
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0(PyObject_Call+0x68) [0x7f9986041cd8]
blender() [0xcda37e]
blender() [0x11867d6]
blender() [0x909f62]
blender() [0x90b2ea]
blender() [0x90b711]
blender() [0x90bc58]
blender(wm_event_do_handlers+0x3e4) [0x90c184]
blender(WM_main+0x18) [0x903c18]
blender(main+0xd93) [0x8ea983]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f997f728b45]
blender() [0x9012c4]
}

Tested with 2.73 release and rB5030daf2a8a31b1a74740d8bc17389c06f246636 - both work fine here. Valgrind also doesn't report any errors.

On a Debian Jessis 32bits i also have the crash.

I have the crash with 2.72b (system blender) and with the builder version (2.73-64124ba)

Launched with valgrind i have this log:

==2948== Invalid read of size 4
==2948==    at 0xAD73F38: PyModule_GetState (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0x5BD7716: ??? (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/2.73/python/lib/python3.4/lib-dynload/readline.cpython-34m.so)
==2948==    by 0x7BF73C1: rl_initialize (in /usr/lib/i386-linux-gnu/libedit.so.2.0.51)
==2948==    by 0x5BD86E8: PyInit_readline (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/2.73/python/lib/python3.4/lib-dynload/readline.cpython-34m.so)
==2948==    by 0xADF51A4: _PyImport_LoadDynamicModule (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xADF1CD6: ??? (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xADDB0A6: PyEval_EvalFrameEx (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xADD50B4: PyEval_EvalCodeEx (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xADDAE93: PyEval_EvalFrameEx (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xADD50B4: PyEval_EvalCodeEx (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xAD575DF: ??? (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==    by 0xAD31CF6: PyObject_Call (in /tmp/bf/blender-2.73-64124ba-linux-glibc211-i686/blender)
==2948==  Address 0x4 is not stack'd, malloc'd or (recently) free'd

(Full log http://www.pasteall.org/56439 )

Julian Eisel (Severin) triaged this task as 30 priority.Feb 3 2015, 2:47 PM

Also can't reproduce this here. Maybe you guys should try using factory settings? Doesn't really look like this from the error log, but chances are this is caused by an addon (although I have no idea how an error log from an addon crash would look like).

When i reproduced it, i used a fresh install (it was a virtual machine) where i never launch Blender on it. So it mean i have a the factory settings and i don't have any extra addon.

It crashes also with a factory default startup file, with no additional addons.
Only 2.70 version doesn't crash, now I'm coding on this.

This debian jessie uses:

libc6:amd64 2.19-13
python3 3.4.2-2
readline-common 6.3-8

Is there any critical information I can give you that could help us to analyze this issue ?

On Ubuntu 14.10 64 bit, I also have the crash. The installed blender version is 2.70a. With 2.73a, it crashes too. With an older version (2.63a), autocompletion works fine.

Now autocomplete in python console in blender 2.73a on my debian jessie amd64 works but I compiled blender from scratch.
The problem, probably, is an incompatibility between a library updates and the linked static of the official version of blender, downloaded from web.

Maybe the official solution to solve this problem is to download blender sources from the web and, in its decompressed directory, start:

./build_files/build_environment/install_deps.sh

I've noticed this because after this compilation the other blender versions, that were downloaded as compiled static from the web, now works with autocomplete,

good news

Giuseppe De Marco (peppelinux) changed the task status from Unknown Status to Resolved.EditedFeb 9 2015, 6:48 PM

Yes, if someone could test as I made we could think of it as completely solved

I compiled blender 2.73a from scratch on my Ubuntu 14.10 64 bit. I started the install_deps.sh script, but I still had to install a lot of dev libraries because I got file not found errors for some .h files. Finally, I succeeded compiling, but the autocompletion crash is still there.
What can I try next? Compiling with debug information and try to find the segmentation fault in a debugger? Or are there command line options for logging?

Julian Eisel (Severin) changed the task status from Resolved to Invalid.Feb 9 2015, 8:28 PM

Something to note here: It wasn't clear to me that you are using own builds, for which reports in our tracker are not allowed. So even if the crashes still occur, we won't reopen until it's proven they also occur on "official" builds. That doesn't mean it's not allowed for you to go on discussing this though (as long as it doesn't get too much), we just won't reopen.

Maybe this is a misunderstanding. I wanted to begin programming blender python and used the official version 2.70a which is installed with Ubuntu 14.10. Because it crashed on code completion, I tried the official binary 2.73a, it also crashes on my Ubuntu. Then I googled and found this bug report - only compiled from source to test if there's a library problem. With the older official version 2.63a, code completion works as designed.

@Julian Eisel (Severin), re: we won't reopen until it's proven they also occur on "official" builds

I don't completely agree, if users apply patches or use unsupported library versions - then we can't support.
But if they use an un-modified codebase on a recent OS and Blender is crashing, then it may well be a bug, so we should try to fix still. (eg T39245)

In this case the crash is outside of Blender so it could be some library conflict - in this case, but we should still try to resolve somehow.

@Thomas (zoschfrosch)

Some things you could try:

  • remove /home/vit/prog/blender-2.73a-linux-glibc211-i686/2.73/python
  • Do a lite build make lite if this works, then it may be some library conflict.

Since the official download from Blender.org works (other Linux distros work too) and Ubuntu's package crashes, you should raise this issue with Debian/Ubuntu maintainers.

Please post a link to the Debian/Ubuntu bug report here.

Campbell Barton (campbellbarton) changed the task status from Invalid to Unknown Status.Feb 10 2015, 6:22 AM
Campbell Barton (campbellbarton) raised the priority of this task from 30 to 50.

Tried building today's master - rB6971bd9a4fbb744386a5ab781172532d0aa4d4c6 on Ubuntu14.04 (server edition).
and couldn't redo the crash.

Since the official download from Blender.org works (other Linux distros work too) and Ubuntu's package crashes, you should raise this issue with Debian/Ubuntu maintainers.

In Ubuntu 14.04 repositories Blender version 2.63. As far as I can see, this bug not reproduced in this version of blender. That is why maintainers of Ubuntu can not help us.
The problem once again occurs in versions from blender.org 2.71 - 2.73a

I compiled blender 2.73a from scratch on my Ubuntu 14.10 64 bit. I started the install_deps.sh script, but I still had to install a lot of dev libraries because I got file not found errors for some .h files. Finally, I succeeded compiling, but the autocompletion crash is still there.
What can I try next? Compiling with debug information and try to find the segmentation fault in a debugger? Or are there command line options for logging?

Try to clean all and rebuild, if you compile your own and this still crashes isn't it a library versioning/bug problem ?
And, the important question is, after this, when you've compiled your own, the static official blender does still crash ?

Note, that I didn't use install_deps.sh - Instread I installed deps from ubuntu, see: http://wiki.blender.org/index.php/Dev:Doc/Building_Blender/Linux/Ubuntu/CMake#Manual_dependencies_installation

Though this doesn't include OpenImageIO, so I had to disable Cycles.

Note, that I didn't use install_deps.sh - Instread I installed deps from ubuntu, see: http://wiki.blender.org/index.php/Dev:Doc/Building_Blender/Linux/Ubuntu/CMake#Manual_dependencies_installation

Though this doesn't include OpenImageIO, so I had to disable Cycles.

Please try
install_deps.sh

Tried out a lot of things, with the following results:
UbuntuStudio 14.10:
The blender 2.70a from the ubuntu repositories crashes
The static official blender 2.73a crashes
A clean build from sources 2.73a crashes
An older blender 2.63a which I have on another partition (it came with ubuntustudio 13.04) works with ubuntu 14.10
Then I compiled the 2.73a as debug, ran it with gdb, and produced a stack trace after the crash:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff759a4eb in PyModule_GetState () from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
(gdb) bt
#0  0x00007ffff759a4eb in PyModule_GetState () from /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
#1  0x00007fffca435984 in ?? () from /home/thomas/install/linux/2.73/python/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so
#2  0x00007fffd48aa365 in rl_initialize () from /usr/lib/x86_64-linux-gnu/libedit.so.2
...

Next try was to run the official blender 2.73a build with ubuntustudio 13.04: No crash!
I guess there's a problem with the python3.4 shared library and ubuntu 14.10, because on ubuntu 13.04 there is no python 3.4 so.
Then I tried ldd with the different blender version. Only the self compiled versions need the python 3.4 shared library.

Last thing I tried was renaming the ubuntu python shared libraries and starting the official blender 2.73a. It crashed again. But what python library does it use?

Any ideas or hints?

Probably takes a library from the system and this cause segmentation fault.

Try to run it with fake env variables, ex

LD_LIBRARY_PATH=/all/but/usr/lib: ./blender

This prevent the use of system libs.
Sorry if I ask you again, have you used install_deps.sh script for update and install requirements ?

Faking the library path, it crashes again. And yes, I have used install_deps.sh.

Tested using install_deps.sh and can't redo the crash there either. (Ubuntu 14.04, 32bit)

using

LD_DEBUG=files ./blender  > blender.log 2>&1

activate python console in blender and play autocomplete. Then close blender e read blender.log.
In my case, the compiled from scratch, exposes:

6357:     calling fini: /home/wert/Progs/blender-2.73a_build/bin/2.73/python/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so [0]
6357:     
6357:     
6357:     calling fini: /lib/x86_64-linux-gnu/libpthread.so.0 [0]
6357:     
6357:     
6357:     calling fini: /lib/x86_64-linux-gnu/libreadline.so.6 [0]

Running it with 2.73a static version

I can see these errors ( uncompatible system-space binary )

6377:     opening file=/usr/lib/x86_64-linux-gnu/libSDL.so [0]; direct_opencount=1
    6377:     
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_GetPlatform (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_memcpy (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_calloc (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_realloc (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_free (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_getenv (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_setenv (fatal)
    6377:     /usr/lib/x86_64-linux-gnu/libSDL.so: error: symbol lookup error: undefined symbol: SDL_qsort (fatal)

and then

6397:     calling fini: /home/wert/Progs/blender-2.73a-linux-glibc211-x86_64/2.73/python/lib/python3.4/lib-dynload/readline.cpython-34m.so [0]
6397:     
6397:     
6397:     calling fini: /lib/x86_64-linux-gnu/libpthread.so.0 [0]
6397:     
6397:     
6397:     calling fini: /lib/x86_64-linux-gnu/libreadline.so.6 [0]

Please do this test and post your results, I'm shure that there will be an incompatibility between static compiled readline.cpython-34m.so and system's libreadline.so.6.

reference:
https://wiki.archlinux.org/index.php/Step-by-step_debugging_guide

Campbell Barton (campbellbarton) renamed this task from Crash during autocompletion in Python Console to Crash during autocompletion in PyConsole (Linux Library Compatibility).Feb 12 2015, 12:28 PM

An easy way to reproduce this error: Download ubuntustudio 14.10, burn iso on a DVD, and boot from DVD in live modus. Blender 2.70a is on the ubuntustudio live DVD and produces this segfault.
Or use virtualbox and boot from the iso file, if you don't want to waste a DVD.

Hi Thomas,

on a ubuntu 14.04

Linux qwert-desktop 3.13.0-23-generic #45-Ubuntu SMP Fri Apr 4 06:58:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

with partner this repository + mate repository
it doesn't crash.

I never use the october releases of ubuntu, because it have updates only for 6 month.
For a workstation the LTS releases are always best, more stable and supported.

I never use the october releases of ubuntu, because it have updates only for 6 month.
For a workstation the LTS releases are always best, more stable and supported.

Oh, really? We are very happy for you. But the problem, unfortunately, is evident not only in 14.10. And even if so, it is a bug and should be fixed.

Hi Giuseppe,

normally, that's also my philosophy...but since 14.04, I cannot connect to my HP network printer - and I found some hints that the bugfix for this comes with 14.10. It's always a trade off between bug fixes and new bugs :-). The way back to 14.04 would be a complete install from scratch...not really a possibility for me. I tried using an older blender version - but with that, my scenes are looking very strange, cubes are becoming spheres.
Python code completion is not the most important feature for me - but I'm with acvarium, it's a bug and I hope it will be fixed. Does it help if I post the debug output as you proposed?

I started, as you asked me, blender with
LD_DEBUG=files blender > blender.log 2>&1
Because I don't call ./blender, it's the official blender version of ubuntu 14.10.

Here are the last lines before it crashes:

      4598:	file=/usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so [0];  dynamically loaded by /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0 [0]
      4598:	file=/usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so [0];  generating link map
      4598:	  dynamic: 0x00007fb1697b0d38  base: 0x00007fb1695ab000   size: 0x00000000002074c0
      4598:	    entry: 0x00007fb1695ada90  phdr: 0x00007fb1695ab040  phnum:                  7
      4598:	
      4598:	
      4598:	file=libreadline.so.6 [0];  needed by /usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so [0]
      4598:	file=libreadline.so.6 [0];  generating link map
      4598:	  dynamic: 0x00007fb1695a3710  base: 0x00007fb169365000   size: 0x0000000000245ef8
      4598:	    entry: 0x00007fb169377f90  phdr: 0x00007fb169365040  phnum:                  7
      4598:	
      4598:	
      4598:	file=/usr/lib/x86_64-linux-gnu/libedit.so.2 [0];  needed by /lib/x86_64-linux-gnu/libreadline.so.6 [0] (relocation dependency)
      4598:	
      4598:	
      4598:	file=/usr/lib/x86_64-linux-gnu/libedit.so.2 [0];  needed by /usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so [0] (relocation dependency)
      4598:	
      4598:	
      4598:	calling init: /lib/x86_64-linux-gnu/libreadline.so.6
      4598:	
      4598:	
      4598:	calling init: /usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so
      4598:	
      4598:	opening file=/usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so [0]; direct_opencount=1
      4598:	
bind: Invalid command `enable-meta-key'.
Writing: /tmp/blender.crash.txt
      4598:	opening file=/lib/x86_64-linux-gnu/libgcc_s.so.1 [0]; direct_opencount=2
      4598:

Then I renamed the file /usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so to force blender to search it somewhere else. Now code completion works without segmentation fault.
I don't know enough about linux shared libraries and the difference between the /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0 and the lib's in /usr/lib/python3.4/lib-dynload/ to understand what's going on.

Nice workaround Thomas,
If I understood the bug, in your case, this affects the ubuntu blender package, so the ubuntu mantainers should recompile it with the readline actually distribuited with 14.10.

If the problem is this, this bug should be closed because it doesn't affects official blender package, isn't so ?

I'm not sure if a recompile solves the problem, because the bug in my case affects the ubuntu version, an official build from blender.org, and even a recompiled version (see my earlier posts). Maybe a recompile on a fresh ubuntu 14.10 solves the problem.
I guess it's not a blender bug. But I'm only a blender user, not a developer, and I don't know if this problem is worth investigating much more effort to find the cause.

Ah, there are more problems in the ubuntu 14.10 version. I continued working on a scene, and when I tried to move some objects to another layer (m), blender crashed when a clicked on the target layer symbol. This also occurs on a fresh ubuntustudio installation, I tried it with the ubuntustudio live session.
I'll try to contact the ubuntu maintainers - don't know how, but I think google will help.

If you are looking for a workaround for you, you can do a chroot of a ubuntu 14.04 or debian inside your 14.10. With chroot you should use CUDA as well.

http://www.binarytides.com/setup-chroot-ubuntu-debootstrap/

As we have considered this ticket we should close this bug because it doesn't affects directly blender but specific distributions packages.

Giuseppe De Marco (peppelinux) changed the task status from Unknown Status to Unknown Status.Feb 14 2015, 5:15 PM

Hi everybody, I submitted an ubuntu bug report: blender crashes on python code completion

Hi,

I am suffering from this bug also. I am using Debian testing and none of the workarounds is working for me.

I tried recompiling blender with and without PYTHON_INSTALL but nothing changes. The catch that make me thinks this might be a Blender (build system) bug instead of a system bug is that I can do auto-completion using readline in pretty much any python console except Blender's:

import rlcompleter, readline
readline.parse_and_bind('tab:complete')

Works in the CPython's console but crash at "import readline" in Blender's console.

Xavier blender python autocompletion binds libreadline present on your system,

please follow the solution proposed by Thomas, rename the blender local lib.
read the previous comments

Giuseppe,

I did try renaming but it did not work yesterday. Today I retried after compiling with PYTHON_INSTALL deactivated in CMake and renaming /usr/lib/python3.4/lib-dynload/readline.cpython-34m-x86_64-linux-gnu.so and it works. Thanks

Found the cause of the issue, and it is indeed a configuration problem. (not an error in our code).

There are 2 libraries that support the 'readline' API (libreadline and libedit), however they aren't 100% API compatible (if they were, we wouldn't have any crashes).

A quick way to test the crash is:

blender --python-console

Where this works:

blender --python-console --background

Whats happening is LLVM is linked with libedit, loading Blender's GUI, loads OpenGL, On *some* systems this will use LLVM, which loads libedit.

Afterwards, when Python attempts to import readline, it uses the symbols for libedit which has an incompatible rl_startup_hook, that is called immediately, (before Python's module has been initialized) and crashes, whereas libreadline postpones executing the callback.

So this fix is to ensure libedit is never used by Python's readline module.


Incidentally, Python is aware of the differences and has ifdef's to support libedit, however these are only enabled when __APPLE__ is defined, building Python against libedit on Linux is possible, but better solve by using correct linking.

Campbell Barton (campbellbarton) changed the task status from Unknown Status to Unknown Status.Feb 26 2015, 9:22 AM
Campbell Barton (campbellbarton) changed the task status from Unknown Status to Resolved.Feb 26 2015, 12:57 PM

Committed workaround rBf159ed77466fac81b7487231b5c0ed9314c250d4

This spesific crash is fixed, however the error with readline crashing on load isnt.
That really needs to be fixed by linking Blender differently, since not all Linux distro's suffer this problem, it should be possible to resolve.

Hi Campbell,

Nice job spotting the origin of the bug. This all make sense now: the bug appeared for me after nvidia stopped supporting my gpu and I had to switch to nouveau.