Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: valgrind по незалинкованной с libc программе  (Прочитано 393 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Кто подскажет как можно проверить на memleak программу, которая использует API ядра, вместо malloc из Сишной stdlib? Программа написана на ассемблере, для выделения памяти используется системный вызов brk. Valgrind ругается и выдает:
Process terminating with default action of signal 4 (SIGILL)
Illegal opcode at address 0x4000C2
Соответственно, по адресу 0x4000C2 имеем int $0x80

Говорят, что баг подобный был, но его уже несколько версий тому назад исправили. Ума не приложу что ему не нравится...

UPD: программа скомпилирована с дебаг-информацией по совету из мана по valgrind.
« Последнее редактирование: 01 Февраль 2014, 20:34:20 от Protopopulus »
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14852
  • Я не слышу.
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #1 : 02 Февраль 2014, 01:29:04 »
objdump -p  `which memleak`
~.o

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #2 : 02 Февраль 2014, 01:40:11 »
objdump -p ./main

./main:     file format elf64-x86-64

Program Header:
    LOAD off    0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 2**21
         filesz 0x0000000000000223 memsz 0x0000000000000223 flags r-x
    LOAD off    0x0000000000000224 vaddr 0x0000000000600224 paddr 0x0000000000600224 align 2**21
         filesz 0x0000000000000000 memsz 0x000000000000000c flags rw-
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14852
  • Я не слышу.
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #3 : 02 Февраль 2014, 01:44:41 »
пример у меня.
$ objdump -p  `which tray-mixer-v`

/usr/bin/tray-mixer-v:     file format elf32-i386

Program Header:
    PHDR off    0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2
         filesz 0x00000120 memsz 0x00000120 flags r-x
  INTERP off    0x00000154 vaddr 0x08048154 paddr 0x08048154 align 2**0
         filesz 0x00000013 memsz 0x00000013 flags r--
    LOAD off    0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12
         filesz 0x00001b44 memsz 0x00001b44 flags r-x
    LOAD off    0x00001ef4 vaddr 0x0804aef4 paddr 0x0804aef4 align 2**12
         filesz 0x000001d8 memsz 0x00000214 flags rw-
 DYNAMIC off    0x00001f08 vaddr 0x0804af08 paddr 0x0804af08 align 2**2
         filesz 0x000000e8 memsz 0x000000e8 flags rw-
    NOTE off    0x00000168 vaddr 0x08048168 paddr 0x08048168 align 2**2
         filesz 0x00000044 memsz 0x00000044 flags r--
EH_FRAME off    0x00001930 vaddr 0x08049930 paddr 0x08049930 align 2**2
         filesz 0x0000006c memsz 0x0000006c flags r--
   STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
         filesz 0x00000000 memsz 0x00000000 flags rw-
   RELRO off    0x00001ef4 vaddr 0x0804aef4 paddr 0x0804aef4 align 2**0
         filesz 0x0000010c memsz 0x0000010c flags r--

Dynamic Section:
  NEEDED               libgtk-3.so.0
  NEEDED               libgobject-2.0.so.0
  NEEDED               libglib-2.0.so.0
  NEEDED               libconfig.so.8
  NEEDED               libc.so.6
  INIT                 0x08048bb8
  FINI                 0x080497dc
  GNU_HASH             0x080481ac
  STRTAB               0x08048578
  SYMTAB               0x080481e8
  STRSZ                0x000003fd
  SYMENT               0x00000010
  DEBUG                0x00000000
  PLTGOT               0x0804aff4
  PLTRELSZ             0x00000188
  PLTREL               0x00000011
  JMPREL               0x08048a30
  REL                  0x08048a28
  RELSZ                0x00000008
  RELENT               0x00000008
  VERNEED              0x080489e8
  VERNEEDNUM           0x00000001
  VERSYM               0x08048976

Version References:
  required from libc.so.6:
    0x0d696914 0x00 04 GLIBC_2.4
    0x0d696911 0x00 03 GLIBC_2.1
    0x0d696910 0x00 02 GLIBC_2.0


~.o

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #4 : 02 Февраль 2014, 02:00:04 »
Виктор, у тебя программа использует библиотеки, а у меня нет.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14852
  • Я не слышу.
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #5 : 02 Февраль 2014, 02:20:05 »
valgrind --smc-check=all ....
~.o

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #6 : 02 Февраль 2014, 02:39:39 »
Пробовал разные параметры valgrind. Выдает ошибку: Process terminating with default action of signal 4 (SIGILL)
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14852
  • Я не слышу.
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #7 : 02 Февраль 2014, 02:43:10 »
это Z80?))
~.o

Оффлайн Protopopulus

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: valgrind по незалинкованной с libc программе
« Ответ #8 : 02 Февраль 2014, 02:50:15 »
 AMD64
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

 

Страница сгенерирована за 0.058 секунд. Запросов: 24.