tag 414444 + patch
thanks

I managed to get a backtrace at last:

        (gdb) thread apply all bt full
        
        Thread 6 (Thread 65539 (LWP 24794)):
        #0  0xb7d20b64 in __pthread_sigsuspend (set=0xb76fbd44)
            at ../linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c:54
                resultvar = 4294966782
        #1  0xb7d1f728 in __pthread_wait_for_restart_signal (self=0x81f7bc0)
            at pthread.c:1224
                mask = {__val = {2147221247, 4294967292, 3084021748, 
3083202916, 
            136281024, 1, 138727832, 3083945568, 32, 3084001294, 3083899536, 
            3084021748, 138727832, 3083945568, 3077553564, 3084021748, 
138727832, 
            3083945568, 3077553564, 3083988975, 3083945584, 3084001524, 
3084001294, 
            3083204191, 3084001934, 138727832, 3085029860, 138727832, 
3084021748, 0, 
            0, 3083990749}}
        #2  0xb7d1d0eb in __pthread_cond_wait (cond=0x80b2680, mutex=0x80b2730)
            at restart.h:34
                self = (volatile pthread_descr) 0x81f7bc0
                extr = {pu_object = 0x80b2680, 
          pu_extricate_func = 0xb7d1d220 <cond_extricate_func>}
                spurious_wakeup_count = 0
        #3  0x0805018c in process_user_request_queue_thread () at 
trackerd.c:1424
                rec = (DBusRec *) 0x0
                reply = (DBusMessage *) 0xb7e1d1e4
                signal_set = {__val = {4294967295 <repeats 32 times>}}
                db_con = (DBConnection *) 0x80fec38
                blob_db_con = (DBConnection *) 0x80f6648
                cache_db_con = (DBConnection *) 0x814e700
        #4  0xb7dd52cf in g_thread_create_proxy (data=0x81f9a78) at 
gthread.c:553
                __PRETTY_FUNCTION__ = "g_thread_create_proxy"
        #5  0xb7d1dc51 in pthread_start_thread (arg=0x81f7bc0) at manager.c:310
                ldt_entry = {entry_number = 6, base_addr = 136281024, limit = 
1048575, 
          seg_32bit = 1, contents = 0, read_exec_only = 0, limit_in_pages = 1, 
          seg_not_present = 0, useable = 1, empty = 0}
                request = {req_thread = 0x0, req_kind = REQ_CREATE, req_args = {
            create = {attr = 0x0, fn = 0, arg = 0x0, mask = {__val = {
                  0 <repeats 26 times>, 3084001524, 0, 0, 3084001934, 0, 0}}}, 
free = {
              thread_id = 0}, exit = {code = 0}, post = 0x0, for_each = {fn = 
0, 
              arg = 0x0}}}
                outcome = <value optimized out>
        #6  0xb7d1ddb4 in pthread_start_thread_event (arg=0x81f7bc0) at 
manager.c:334
                ldt_entry = {entry_number = 6, base_addr = 136281024, limit = 
1048575, 
          seg_32bit = 1, contents = 0, read_exec_only = 0, limit_in_pages = 1, 
          seg_not_present = 0, useable = 1, empty = 0}
        #7  0xb7cb638a in clone () from /usr/lib/debug/libc.so.6
                fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {
            mnt_fsname = 0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, 
            mnt_freq = 0, mnt_passno = 0}, fs_ret = {fs_spec = 0x0, fs_file = 
0x0, 
            fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq = 0, 
            fs_passno = 0}}
                __elf_set___libc_subfreeres_element_fstab_free__ = (
            const void *) 0xb7cf1040
        
        Thread 5 (Thread 49154 (LWP 24793)):
        #0  0x0807b4f1 in tracker_get_mime_type (
            uri=0x81816a8 "/home/sam/public_html/cal/ian") at 
tracker-utils.c:1335
                finfo = {st_dev = 2304, __pad1 = 0, st_ino = 36536322, 
          st_mode = 33188, st_nlink = 1, st_uid = 1000, st_gid = 1000, st_rdev 
= 0, 
          __pad2 = 0, st_size = 8793, st_blksize = 4096, st_blocks = 24, 
st_atim = {
            tv_sec = 1174147202, tv_nsec = 0}, st_mtim = {tv_sec = 1174147202, 
            tv_nsec = 0}, st_ctim = {tv_sec = 1174147202, tv_nsec = 0}, 
__unused4 = 0, 
          __unused5 = 0}
                uri_in_locale = 0x8127b00 "/home/sam/public_html/cal/ian"
                result = 0x0
                mime = 0xf <Address 0xf out of bounds>
                i = 0
        #1  0x08067a9a in tracker_db_index_file (db_con=0x80de370, 
info=0x81f4370, 
            is_attachment=0) at tracker-db.c:955
                meta_table = (GHashTable *) 0xb731efc0
                ext = 0xb78fbd68 "Ƚ\217�\232\201\006\bp�\r\bpC\037\b"
                str_link_uri = 0x807b266 "\211E�\213E���U\211�\203�(�D$\020"
                service_name = 0x809f954 "Files"
                services_with_metadata = {0x809be8f "Documents", 0x809be99 
"Music", 
          0x809be9f "Videos", 0x809bea6 "Images", 0x0}
                services_with_text = {0x809be8f "Documents", 0x809bead "Text 
Files", 
          0x809beb8 "Development Files", 0x0}
                services_with_thumbs = {0x809be8f "Documents", 0x809bea6 
"Images", 
          0x809be9f "Videos", 0x0}
                is_file_indexable = 134948848
                service_has_metadata = -1215316632
                is_external_service = -1210324175
                service_has_fulltext = 136674008
                service_has_thumbs = 136674008
        #2  0x0806819a in tracker_db_index_entity (db_con=0x80de370, 
info=0x81f4370)
            at tracker-db.c:1084
                __PRETTY_FUNCTION__ = "tracker_db_index_entity"
        #3  0x0804ffa2 in process_files_thread () at trackerd.c:1353
                info = (FileInfo *) 0x81f4370
                need_index = 1
                signal_set = {__val = {4294967295 <repeats 32 times>}}
                db_con = (DBConnection *) 0x80de370
                blob_db_con = (DBConnection *) 0x80fc048
                moved_from_list = (GSList *) 0x0
                pushed_events = 0
                first_run = 1
        #4  0xb7dd52cf in g_thread_create_proxy (data=0x80de540) at 
gthread.c:553
                __PRETTY_FUNCTION__ = "g_thread_create_proxy"
        #5  0xb7d1dc51 in pthread_start_thread (arg=0x81f9620) at manager.c:310
                ldt_entry = {entry_number = 6, base_addr = 136287776, limit = 
1048575, 
          seg_32bit = 1, contents = 0, read_exec_only = 0, limit_in_pages = 1, 
          seg_not_present = 0, useable = 1, empty = 0}
                request = {req_thread = 0x0, req_kind = REQ_CREATE, req_args = {
            create = {attr = 0x0, fn = 0, arg = 0x0, mask = {__val = {
                  0 <repeats 26 times>, 3084001524, 0, 0, 3084001934, 0, 0}}}, 
free = {
              thread_id = 0}, exit = {code = 0}, post = 0x0, for_each = {fn = 
0, 
              arg = 0x0}}}
                outcome = <value optimized out>
        #6  0xb7d1ddb4 in pthread_start_thread_event (arg=0x81f9620) at 
manager.c:334
                ldt_entry = {entry_number = 6, base_addr = 136287776, limit = 
1048575, 
          seg_32bit = 1, contents = 0, read_exec_only = 0, limit_in_pages = 1, 
          seg_not_present = 0, useable = 1, empty = 0}
        #7  0xb7cb638a in clone () from /usr/lib/debug/libc.so.6
                fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {
            mnt_fsname = 0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, 
            mnt_freq = 0, mnt_passno = 0}, fs_ret = {fs_spec = 0x0, fs_file = 
0x0, 
            fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq = 0, 
            fs_passno = 0}}
                __elf_set___libc_subfreeres_element_fstab_free__ = (
            const void *) 0xb7cf1040
        
        Thread 2 (Thread 32769 (LWP 24734)):
        #0  0xb7cad579 in *__GI___poll (fds=0xb7d12ff4, nfds=1, timeout=2000)
            at ../sysdeps/unix/sysv/linux/poll.c:86
                resultvar = <value optimized out>
                oldtype = 0
                result = <value optimized out>
        #1  0xb7d1e1f0 in __pthread_manager (arg=0x80c3d40) at manager.c:152
                reqfd = 13
                ufd = {fd = 13, events = 1, revents = 0}
                manager_mask = {__val = {4294967279, 4294967294, 
            4294967295 <repeats 30 times>}}
                n = <value optimized out>
                request = {req_thread = 0x80ac8c0, req_kind = REQ_CREATE, 
req_args = {
            create = {attr = 0xbfd92254, fn = 0xb7dd5290 
<g_thread_create_proxy>, 
              arg = 0x81f9a78, mask = {__val = {2147483648, 0, 19, 3082838696, 
                  3083205297, 3086761972, 3085425912, 1, 3218678248, 
3083964784, 
                  3085425912, 3086761972, 3085423264, 1, 3218678272, 
3086717689, 
                  3085423692, 40, 3083945608, 1, 0, 3085035651, 46, 3085033472, 
12680, 
                  3083964784, 3084001294, 0, 3218678356, 3218678408, 
3083978629, 
                  3083994923}}}, free = {thread_id = 3218678356}, exit = {
              code = -1076288940}, post = 0xbfd92254, for_each = {fn = 
0xbfd92254, 
              arg = 0xb7dd5290}}}
        #2  0xb7d1ebc7 in __pthread_manager_event (arg=0x80c3d40) at 
manager.c:249
                ldt_entry = {entry_number = 6, base_addr = 135019840, limit = 
1048575, 
          seg_32bit = 1, contents = 0, read_exec_only = 0, limit_in_pages = 1, 
          seg_not_present = 0, useable = 1, empty = 0}
        #3  0xb7cb638a in clone () from /usr/lib/debug/libc.so.6
                fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {
            mnt_fsname = 0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, 
            mnt_freq = 0, mnt_passno = 0}, fs_ret = {fs_spec = 0x0, fs_file = 
0x0, 
            fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq = 0, 
            fs_passno = 0}}
                __elf_set___libc_subfreeres_element_fstab_free__ = (
            const void *) 0xb7cf1040
        
        Thread 1 (Thread 16384 (LWP 24731)):
        #0  0xb7d239db in write () from /usr/lib/debug/libpthread.so.0
        No symbol table info available.
        #1  0xb7e7c218 in ?? () from /usr/lib/libsqlite3.so.0
        No symbol table info available.
        #2  0x00000000 in ?? ()
        No symbol table info available.
        0x0807b4f1      1335    in tracker-utils.c

Looks like the return value of magic_file is not being checked for
errors. Here's a patch:

        --- tracker-0.5.4/src/trackerd/tracker-utils.c  2007-01-26 
00:15:11.000000000 +0000
        +++ tracker-0.5.4+fix/src/trackerd/tracker-utils.c      2007-03-17 
17:57:28.000000000 +0000
        @@ -1332,15 +1332,17 @@
         
                        result =  magic_file (tracker->magic, uri_in_locale);
         
        -               for (i=0; result[i]; i++) {
        -                       if (result[i] == ';') {
        -                               break;
        -                       }
        -               }
        -
                        if (result) {
        +                       for (i=0; result[i]; i++) {
        +                               if (result[i] == ';') {
        +                                       break;
        +                               }
        +                       }
                                mime = g_strndup (result, i);
                        } else {
        +                       tracker_log ("magic_file error for <%s>: %s\n",
        +                               uri_in_locale,
        +                               magic_error (tracker->magic));
                                mime = g_strdup ("unknown");
                        }
                } else {

-- 
Sam Morris
http://robots.org.uk/

PGP key id 1024D/5EA01078
3412 EA18 1277 354B 991B  C869 B219 7FDB 5EA0 1078

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to