On Sat, Jul 25, 2015 at 06:17:28AM +0300, Hihin Ruslan wrote: > Здравствуйте ! > > Разбираясь с тем, почему происходит выпадение в core 32-битной > версии palemoon, пришёл к выводу, что падение происходит в > функции malloc, а именно на этом участке кода (файл malloc.c из > glibc-core): > > Вызов из palemoon: > options = malloc (sizeof (cairo_font_options_t)); > > Код malloc.c: > стр 3350 > if (in_smallbin_range(nb)) { > idx = smallbin_index(nb); > bin = bin_at(av,idx); > > if ( (victim = last(bin)) != bin) { > if (victim == 0) /* initialization check */ > malloc_consolidate(av); > else { > bck = victim->bk; > ===> (стр 3359) if (__builtin_expect (bck->fd != victim, 0)) > { > errstr = "malloc(): smallbin double linked list corrupted"; > goto errout; > } > set_inuse_bit_at_offset(victim, nb); > bin->bk = bck; > bck->fd = bin; > > if (av != &main_arena) > victim->size |= NON_MAIN_ARENA; > check_malloced_chunk(av, victim, nb); > void *p = chunk2mem(victim); > if (__builtin_expect (perturb_byte, 0)) > alloc_perturb (p, bytes); > return p; > } > } > > А именно, судя по всему в victim->bk находится 0, и bck->fd > превращается в null->fd. > > Это глюк malloc, или неправильное обращение от palemoon? > Мне всё-же кажется, что самого glibc. Если у вас memory corruption, то glibc -- это последнее место, которое стоит проверять. Есть разные средства отладки, проверьте сперва ими. Начните с valgrind. -- ldv