Bug#702503: blender 2.66a-1 crashes at launch, when looking for locales dir

Antonio Ospite ospite at studenti.unina.it
Thu Mar 7 14:06:33 UTC 2013


Package: blender
Version: 2.66a-1
Severity: important
Tags: upstream

Dear Maintainer,

blender-2.66a-1 from experimental crashes here, this is the backtrace:

-----------------------------------------------------------------------
(gdb) run
Starting program: /usr/bin/blender 
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe5e32700 (LWP 30189)]
Color management: using fallback mode for management
connect failed: No such file or directory

Program received signal SIGSEGV, Segmentation fault.
memchr () at ../sysdeps/x86_64/memchr.S:33
33      ../sysdeps/x86_64/memchr.S: File o directory non esistente.
(gdb) bt full
#0  memchr () at ../sysdeps/x86_64/memchr.S:33
No locals.
#1  0x0000000000f0b02e in BLI_strnlen (str=str at entry=0x0, maxlen=maxlen at entry=1024)
    at /tmp/buildd/blender-2.66a/source/blender/blenlib/intern/string.c:436
        end = <optimized out>
#2  0x0000000000f03ba6 in BLI_join_dirfile (dst=dst at entry=0x0, maxlen=maxlen at entry=1024, dir=dir at entry=0x0, 
    file=file at entry=0x17f34c8 "languages") at /tmp/buildd/blender-2.66a/source/blender/blenlib/intern/path_util.c:1521
        dirlen = <optimized out>
#3  0x000000000132e312 in fill_locales () at /tmp/buildd/blender-2.66a/source/blender/blenfont/intern/blf_lang.c:88
        lines = 0x0
        line = <optimized out>
        str = <optimized out>
        idx = 0
        languages_path = 0x0
#4  BLF_lang_init () at /tmp/buildd/blender-2.66a/source/blender/blenfont/intern/blf_lang.c:192
        messagepath = <optimized out>
        __func__ = "BLF_lang_init"
#5  0x00000000008bbe6d in WM_init (C=C at entry=0x2984c78, argc=argc at entry=1, argv=argv at entry=0x7fffffffe038)
    at /tmp/buildd/blender-2.66a/source/blender/windowmanager/intern/wm_init_exit.c:156
No locals.
#6  0x00000000008a537f in main (argc=1, argv=0x7fffffffe038) at /tmp/buildd/blender-2.66a/source/creator/creator.c:1548
        C = 0x2984c78
        syshandle = 0x298cba0
        ba = 0x298cc18
(gdb) 
-----------------------------------------------------------------------

A strace capture shows what the program was doing before crashing:

-----------------------------------------------------------------------
....
stat("/home/ao2/.config/blender/2.66/datafiles/locale", 0x7fff6f95bac0) = -1 ENOENT (No such file or directory)
stat("/usr/bin/2.66/datafiles/locale", 0x7fff6f95bad0) = -1 ENOENT (No such file or directory)
stat("/home/ao2/Proj/debian/Src/blender/release/datafiles/locale", 0x7fff6f95b2b0) = -1 ENOENT (No such file or directory)
stat("/usr/bin/release/datafiles/locale", 0x7fff6f95b2b0) = -1 ENOENT (No such file or directory)
stat("/usr/share/blender/2.66/datafiles/locale", 0x7fff6f95b2b0) = -1 ENOENT (No such file or directory)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
-----------------------------------------------------------------------

We have to fix fill_locales(), which still thinks the locale files are in
BLENDER_SYSTEM_DATAFILES.

I have an experimental patch which fixes the crash, I am going to post it as
a follow up mail, so I can use use the report number in it.

BTW, I think that blender should fail gracefully when it does not find
a directory or a file, it should not crash, maybe something like this can be
upstreamed:

-----------------------------------------------------------------------
diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c
index 73294f1..23dd3d5 100644
--- a/source/blender/blenfont/intern/blf_lang.c
+++ b/source/blender/blenfont/intern/blf_lang.c
@@ -76,16 +76,16 @@ static void free_locales(void)
        num_locales = num_locales_menu = 0;
 }

-static void fill_locales(void)
+static void fill_locales(char *locale_path)
 {
-       char *languages_path = BLI_get_folder(BLENDER_DATAFILES, "locale");
+       char *languages_path = locale_path;
        LinkNode *lines = NULL, *line;
        char *str;
        int idx = 0;

        free_locales();

-       BLI_join_dirfile(languages_path, FILE_MAX, languages_path, "languages");
+       BLI_join_dirfile(languages_path, FILE_MAX, locale_path, "languages");
        line = lines = BLI_file_read_as_lines(languages_path);

        /* This whole "parsing" code is a bit weak, in that it expects strictly formated input file...
@@ -189,7 +189,7 @@ void BLF_lang_init(void)

        if (messagepath) {
                bl_locale_init(messagepath, TEXT_DOMAIN_NAME);
-               fill_locales();
+               fill_locales(messagepath);
        }
        else {
                printf("%s: 'locale' data path for translations not found, continuing\n", __func__);

-----------------------------------------------------------------------

This would avoid a possible crash even for the pristine code as fill_locales()
is called only when messagepath has been found.

But I have no time to properly test it and upstream it for now.

Thanks,
   Antonio

-- System Information:
Debian Release: 7.0
  APT prefers unstable
  APT policy: (900, 'unstable'), (600, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.8-trunk-amd64 (SMP w/1 CPU core)
Locale: LANG=it_IT.utf8, LC_CTYPE=it_IT.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages blender depends on:
ii  fonts-droid                20111207+git-1
ii  libavcodec54               6:9.3-1
ii  libavdevice53              6:9.3-1
ii  libavformat54              6:9.3-1
ii  libavutil52                6:9.3-1
ii  libboost-date-time1.49.0   1.49.0-3.2
ii  libboost-filesystem1.49.0  1.49.0-3.2
ii  libboost-locale1.49.0      1.49.0-3.2
ii  libboost-regex1.49.0       1.49.0-3.2
ii  libboost-system1.49.0      1.49.0-3.2
ii  libboost-thread1.49.0      1.49.0-3.2
ii  libc6                      2.13-38
ii  libfftw3-3                 3.3.2-3.1
ii  libfontconfig1             2.9.0-7.1
ii  libfreetype6               2.4.9-1.1
ii  libgcc1                    1:4.7.2-5
ii  libgl1-mesa-glx [libgl1]   8.0.5-3
ii  libglew1.7                 1.7.0-3
ii  libglu1-mesa [libglu1]     8.0.5-3
ii  libgomp1                   4.7.2-5
ii  libilmbase6                1.0.1-6
ii  libjack0 [libjack-0.116]   1:0.121.3+20120418git75e3e20b-2.1
ii  libjpeg8                   8d-1
ii  libjs-jquery               1.7.2+dfsg-1
ii  libopenal1                 1:1.14-4
ii  libopenexr6                1.6.1-7
ii  libopenimageio1.1          1.1.3+dfsg0-1
ii  libopenjpeg2               1.3+dfsg-4.6
ii  libpng12-0                 1.2.49-3
ii  libpython3.3               3.3.0-12
ii  libsdl-1.3-0               1.3.0~20111204-1
ii  libsndfile1                1.0.25-5
ii  libspnav0                  0.2.2-1
ii  libstdc++6                 4.7.2-5
ii  libswscale2                6:9.3-1
ii  libtiff4                   3.9.6-11
ii  libx11-6                   2:1.5.0-1
ii  libxi6                     2:1.6.1-1
ii  python3                    3.3.0-2
ii  python3.3                  3.3.0-12
ii  zlib1g                     1:1.2.7.dfsg-13

blender recommends no packages.

Versions of packages blender suggests:
pn  yafaray-exporter  <none>

-- no debconf information



More information about the pkg-multimedia-maintainers mailing list