* [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
@ 2015-07-25 3:17 Hihin Ruslan
2015-07-25 9:53 ` Dmitry V. Levin
0 siblings, 1 reply; 9+ messages in thread
From: Hihin Ruslan @ 2015-07-25 3:17 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 1450 bytes --]
Здравствуйте !
Разбираясь с тем, почему происходит выпадение в 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.
--
А ещё говорят так (fortune):
If men acted after marriage as they do during courtship, there
would be fewer divorces -- and more bankruptcies. -- Frances
Rodman
________________________________________________________________________
С уважением Хихин Руслан
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 3:17 [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре Hihin Ruslan
@ 2015-07-25 9:53 ` Dmitry V. Levin
2015-07-25 9:57 ` Руслан Хихин
0 siblings, 1 reply; 9+ messages in thread
From: Dmitry V. Levin @ 2015-07-25 9:53 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1559 bytes --]
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
[-- Attachment #2: Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 9:53 ` Dmitry V. Levin
@ 2015-07-25 9:57 ` Руслан Хихин
2015-07-25 10:33 ` Dmitry V. Levin
0 siblings, 1 reply; 9+ messages in thread
From: Руслан Хихин @ 2015-07-25 9:57 UTC (permalink / raw)
To: ALT Linux Team development discussions
Вот с их помощью на это место и вышел.
------ Исходное сообщение ------
От: "Dmitry V. Levin" <ldv@altlinux.org>
Отправлено: 25 июля 2015 г. 12:53:37 GMT+03:00
Кому: ALT Devel discussion list <devel@lists.altlinux.org>
Тема: Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
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.
--
Простите за краткость, создано в K-9 Mail.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 9:57 ` Руслан Хихин
@ 2015-07-25 10:33 ` Dmitry V. Levin
2015-07-25 15:05 ` Hihin Ruslan
2015-07-25 15:39 ` Hihin Ruslan
0 siblings, 2 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2015-07-25 10:33 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 297 bytes --]
On Sat, Jul 25, 2015 at 12:57:01PM +0300, Руслан Хихин wrote:
> Вот с их помощью на это место и вышел.
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 10:33 ` Dmitry V. Levin
@ 2015-07-25 15:05 ` Hihin Ruslan
2015-07-25 15:39 ` Hihin Ruslan
1 sibling, 0 replies; 9+ messages in thread
From: Hihin Ruslan @ 2015-07-25 15:05 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1143 bytes --]
Здравствуйте Dmitry V. Levin
В сообщении от 25 июля 2015 Dmitry V. Levin написал(a):
> A: Top-posting.
> Q: What is the most annoying thing in e-mail?
Извините - с телефона отвечал. valgrind
- это, конечно, хорошо, но пугают цифры:
==19357== LEAK SUMMARY:
==19357== definitely lost: 44,131 bytes in 828 blocks
==19357== indirectly lost: 18,610 bytes in 1,133 blocks
==19357== possibly lost: 4,804,441 bytes in 17,195 blocks
==19357== still reachable: 26,510,770 bytes in 189,137 blocks
==19357== suppressed: 0 bytes in 0 blocks
==19357== Reachable blocks (those to which a pointer was found)
are not shown.
==19357== To see them, rerun
with: --leak-check=full --show-leak-kinds=all
==19357==
==19357== For counts of detected and suppressed errors, rerun
with: -v
==19357== Use --track-origins=yes to see where uninitialised
values come from
==19357== ERROR SUMMARY: 11515 errors from 3757 contexts
(suppressed: 2 from 1)
--
А ещё говорят так (fortune):
Склероз вылечить нельзя, зато о нем можно забыть
________________________________________________________________________
С уважением Хихин Руслан
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 10:33 ` Dmitry V. Levin
2015-07-25 15:05 ` Hihin Ruslan
@ 2015-07-25 15:39 ` Hihin Ruslan
2015-07-25 15:51 ` Dmitry V. Levin
1 sibling, 1 reply; 9+ messages in thread
From: Hihin Ruslan @ 2015-07-25 15:39 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 2280 bytes --]
Здравствуйте Dmitry V. Levin
В сообщении от 25 июля 2015 Dmitry V. Levin написал(a):
> On Sat, Jul 25, 2015 at 12:57:01PM +0300, Руслан Хихин wrote:
> > Вот с их помощью на это место и вышел.
>
> A: Because it messes up the order in which people normally
> read text. Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing in e-mail?
Вот как мне такое место расшифровать?
==19389== 3 bytes in 1 blocks are still reachable in loss record
1 of 356
==19389== at 0x40294DA: malloc (vg_replace_malloc.c:296)
==19389== by 0x4271B40: strdup (strdup.c:42)
==19389== by 0x47BE19C: PR_NewLogModule (prlog.c:356)
==19389== by 0x47C9A0B: _PR_InitStuff (prinit.c:155)
==19389== by 0x47D2E04: PR_NewLock (ptsynch.c:140)
==19389== by 0x8AF30A3: InstallSignalHandlersMutex
(AsmJSSignalHandlers.cpp:162)
==19389== by 0x8AF30A3:
__static_initialization_and_destruction_0
(AsmJSSignalHandlers.cpp:177)
==19389== by 0x8AF30A3: _GLOBAL__sub_I_AsmJSSignalHandlers.cpp
(AsmJSSignalHandlers.cpp:998)
==19389== by 0x400EFDD: call_init.part.0 (dl-init.c:82)
==19389== by 0x400F0C9: call_init (dl-init.c:34)
==19389== by 0x400F0C9: _dl_init (dl-init.c:130)
==19389== by 0x401310C: dl_open_worker (dl-open.c:566)
==19389== by 0x400EE4D: _dl_catch_error (dl-error.c:177)
==19389== + by 0x4012943: _dl_open (dl-open.c:656)
==19389== by 0x4046CCD: dlopen_doit (dlopen.c:66)
==19389==.
У меня такого файла в исходниках - vg_replace_malloc вообще нет,
а strdup(42) - это неправильное присвоение:
char *s
....
s="";
....
c тем, что-бы дальше передать его в какой-то ....strlen
Вот дословно этот кусок:
PR_IMPLEMENT(char *)
PL_strndup(const char *s, PRUint32 max)
{
char *rv;
size_t l;
if( (const char *)0 == s )
s = "";
l = PL_strnlen(s, max);
rv = (char *)malloc(l+1);
if( (char *)0 == rv ) return rv;
(void)memcpy(rv, s, l);
rv[l] = '\0';
return rv;
}
--
А ещё говорят так (fortune):
<Iambe> you are not a nutcase <Knghtbrd> You obviously don't know
me well enough yet. =>
________________________________________________________________________
С уважением Хихин Руслан
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 15:39 ` Hihin Ruslan
@ 2015-07-25 15:51 ` Dmitry V. Levin
2015-07-25 17:20 ` Hihin Ruslan
2015-07-27 11:16 ` Хихин Руслан
0 siblings, 2 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2015-07-25 15:51 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 674 bytes --]
On Sat, Jul 25, 2015 at 06:39:28PM +0300, Hihin Ruslan wrote:
> Здравствуйте Dmitry V. Levin
> В сообщении от 25 июля 2015 Dmitry V. Levin написал(a):
> > On Sat, Jul 25, 2015 at 12:57:01PM +0300, Руслан Хихин wrote:
> > > Вот с их помощью на это место и вышел.
> >
> > A: Because it messes up the order in which people normally
> > read text. Q: Why is top-posting such a bad thing?
> > A: Top-posting.
> > Q: What is the most annoying thing in e-mail?
>
> Вот как мне такое место расшифровать?
>
> ==19389== 3 bytes in 1 blocks are still reachable in loss record
> 1 of 356
Это про утечки памяти, ищите лучше "Invalid write of size ".
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 15:51 ` Dmitry V. Levin
@ 2015-07-25 17:20 ` Hihin Ruslan
2015-07-27 11:16 ` Хихин Руслан
1 sibling, 0 replies; 9+ messages in thread
From: Hihin Ruslan @ 2015-07-25 17:20 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 2057 bytes --]
Здравствуйте Dmitry V. Levin
В сообщении от 25 июля 2015 Dmitry V. Levin написал(a):
> On Sat, Jul 25, 2015 at 06:39:28PM +0300, Hihin Ruslan wrote:
> > Здравствуйте Dmitry V. Levin
> >
> > В сообщении от 25 июля 2015 Dmitry V. Levin написал(a):
> > > On Sat, Jul 25, 2015 at 12:57:01PM +0300, Руслан Хихин
wrote:
> > > > Вот с их помощью на это место и вышел.
> > >
> > > A: Because it messes up the order in which people normally
> > > read text. Q: Why is top-posting such a bad thing?
> > > A: Top-posting.
> > > Q: What is the most annoying thing in e-mail?
> >
> > Вот как мне такое место расшифровать?
> >
> > ==19389== 3 bytes in 1 blocks are still reachable in loss
> > record 1 of 356
>
> Это про утечки памяти, ищите лучше "Invalid write of size ".
Похоже, проблема с указателем nullptr, указывает на строчки типа
mHashtable = nullptr;
он хитро определен (файл mfbt/NullPtr.h ):
#define mozilla_NullPtr_h_
#include "mozilla/Compiler.h"
#if defined(__clang__)
# ifndef __has_extension
# define __has_extension __has_feature
# endif
# if __has_extension(cxx_nullptr)
# define MOZ_HAVE_CXX11_NULLPTR
# endif
#elif defined(__GNUC__)
# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >=
201103L
# if MOZ_GCC_VERSION_AT_LEAST(4, 6, 0)
# define MOZ_HAVE_CXX11_NULLPTR
# endif
# endif
#elif _MSC_VER >= 1600
# define MOZ_HAVE_CXX11_NULLPTR
#endif
/**
* Use C++11 nullptr if available; otherwise use __null for gcc,
or a 0 literal
* with the correct size to match the size of a pointer on a
given platform.
*/
#ifndef MOZ_HAVE_CXX11_NULLPTR
# if defined(__GNUC__)
# define nullptr __null
# elif defined(_WIN64)
# define nullptr 0LL
# else
# define nullptr 0L
# endif
#endif
#endif /* mozilla_NullPtr_h_ */
--
А ещё говорят так (fortune):
IN MY OPINION anyone interested in improving himself should not
rule out becoming pure energy. -- Jack Handley, The New Mexican,
1988.
________________________________________________________________________
С уважением Хихин Руслан
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре
2015-07-25 15:51 ` Dmitry V. Levin
2015-07-25 17:20 ` Hihin Ruslan
@ 2015-07-27 11:16 ` Хихин Руслан
1 sibling, 0 replies; 9+ messages in thread
From: Хихин Руслан @ 2015-07-27 11:16 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 913 bytes --]
Здравствуйте !
On Saturday 25 July 2015 18:51:02 Dmitry V. Levin написал(а):
> Это про утечки памяти, ищите лучше "Invalid write of size ".
Спасибо, Дима, в общем проблема была в неправильном размере указателя,
решилась (стучу по деревяшке, т.к. прошедшее через Сизифную сборочницу ещё не
тестировалояь) добавлением опции -march=i586.
Странно, что версия для p7/t7 работала без проблем и без этой опции. Я думаю,
это наверное, было связано с другой архитектурой процессора на сборочницах.
Хотя могут быть варианты.
--
C уважением, Хихин Руслан.
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-07-27 11:16 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-25 3:17 [devel] Ошибка выделения памяти в malloc в 32-х битной архитектуре Hihin Ruslan
2015-07-25 9:53 ` Dmitry V. Levin
2015-07-25 9:57 ` Руслан Хихин
2015-07-25 10:33 ` Dmitry V. Levin
2015-07-25 15:05 ` Hihin Ruslan
2015-07-25 15:39 ` Hihin Ruslan
2015-07-25 15:51 ` Dmitry V. Levin
2015-07-25 17:20 ` Hihin Ruslan
2015-07-27 11:16 ` Хихин Руслан
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git