Page 1 of 2

menuetlibc: sbrk/init_brk

Posted: Tue Jun 05, 2012 10:29 am
by SoUrcerer
За год работы с menuetlibc и newlib я стал более опытен и научился работать с map-файлами.
И вот сегодня я осознал, что основная часть программ (которую мне удалось собрать для Колибри, но которая всё же падает при запуске) падает при обращении либо к init_brk, либо sbrk. Что вообще эти функции должны делать и почему при обращении к ним программа может упасть? По идее, эти функции должны управлять памятью, верно? В каких случаях тогда может наблюдаться эпик фейл?
Если разобраться с этими багами, вероятно, в Колибри заработают еще пару эмуляторов и языков программирования. Да и вообще, лучше без багов, чем с ними :)

Re: menuetlibc: sbrk/init_brk

Posted: Tue Jun 05, 2012 11:48 am
by Serge
Это строе никсовое управление памятью. newlib его не использует. Аналог в Колибри ф64.

Re: menuetlibc: sbrk/init_brk

Posted: Tue Jun 05, 2012 3:39 pm
by CleverMouse
Судя по коду, init_brk инициализирует кучу, sbrk выделяет очередной блок динамической памяти из кучи. На них основаны malloc/realloc/free, которые из этого блока нарезают уже маленькие области. Почему падает, вопрос к телепатам. Может, памяти не хватает?

Re: menuetlibc: sbrk/init_brk

Posted: Tue Jun 05, 2012 5:01 pm
by SoUrcerer
Памяти валом и у системы, и у приложения. И это странно.

Re: menuetlibc: sbrk/init_brk

Posted: Tue Jun 05, 2012 5:54 pm
by FireWall
А дизассемблировать эти функции не пробовал? Или под отладчиком выяснить команду процессора, на которой вылетает приложение?

Re: menuetlibc: sbrk/init_brk

Posted: Wed Jun 27, 2012 10:01 pm
by CleverMouse
В menuetlibc, лежащей на svn, могут быть проблемы, если приложение многопоточное и много потоков пытаются выделять/освобождать память параллельно. Для исправления достаточно вставить вызовы malloc_lock() в начало malloc() и free(), src/libc/ansi/stdlib/malloc.c, и malloc_unlock() перед каждым return и в конце free().

Re: menuetlibc: sbrk/init_brk

Posted: Thu Aug 01, 2013 10:30 pm
by punk_joker
проблемы со сборкой библиотеки:

joker@joker-VirtualBox:~$ cd menuetlibc
joker@joker-VirtualBox:~/menuetlibc$ make
Building library for linux
gcc mkversion.c -o mkversion
./mkversion < version > include/libc/version.h
make -C linuxtools
make[1]: Вход в каталог `/home/joker/menuetlibc/linuxtools'
Makefile:1: /osrules.mak: Нет такого файла или каталога
make[1]: *** Нет правила для сборки цели `/osrules.mak'. Останов.
make[1]: Выход из каталога `/home/joker/menuetlibc/linuxtools'
make: *** [all] Ошибка 2
joker@joker-VirtualBox:~/menuetlibc$

Настроил вроде как все правильно

Re: menuetlibc: sbrk/init_brk

Posted: Thu Aug 01, 2013 11:34 pm
by SoUrcerer
64х-битная ОС?*

Re: menuetlibc: sbrk/init_brk

Posted: Fri Aug 02, 2013 12:23 am
by punk_joker
32x

Re: menuetlibc: sbrk/init_brk

Posted: Fri Aug 02, 2013 8:46 am
by SoUrcerer
Переменную окружения MENUETDEV устанавливал?

Re: menuetlibc: sbrk/init_brk

Posted: Fri Aug 02, 2013 10:20 am
by punk_joker
Уже все нормально :-) Толи я при создании переменной окружения путь не правильный указал, толи из-за добавления в .bash_profile.

Re: menuetlibc: sbrk/init_brk

Posted: Tue Jun 10, 2014 8:40 pm
by z525
Скажите пожалуйста куда пропала библиотека menuetlibc ? С SVN имею ввиду.
Последний раз была в Rev. 4798 .

Re: menuetlibc: sbrk/init_brk

Posted: Wed Jun 11, 2014 1:17 pm
by SoUrcerer
Да, я тоже заметил пропажу. Интересно, кто удалил.

Re: menuetlibc: sbrk/init_brk

Posted: Wed Jun 11, 2014 1:30 pm
by Mario_r4
Слонёнок вряд ли сознается сам.

Re: menuetlibc: sbrk/init_brk

Posted: Wed Jun 11, 2014 1:34 pm
by 0CodErr
Вот так временное становится постоянным :)