в free (): error: указатель на спам, слишком высокий, чтобы иметь смысл Ошибка сегментации: 11 (сброшено ядро) gprof - PullRequest
0 голосов
/ 01 апреля 2010

Я пытаюсь профилировать свою заявку. Для этого я скомпилировал свой код с опцией -pg и -lc_p, он успешно скомпилирован

Во время выполнения я получаю следующую ошибку. в free (): error: указатель мусора, слишком высокий, чтобы иметь смысл Ошибка сегментации: 11 (ядро сброшено)

Выполнение GDB дает ошибку как.

(gdb) b main
Breakpoint 1 at 0x5124d4:
(gdb) r
warning: Unable to get location for thread creation breakpoint: generic error
[New LWP 100085]
cacheIp in free(): error: junk pointer, too high to make sense

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 100085]
0x00000000006c3a1f in pthread_sigmask ()

Мое приложение является многопоточным и представляет собой комбинацию кода C и C ++.

uname -a
FreeBSD 6.3-RELEASE FreeBSD 6.3-RELEASE #0: Wed Jan 16 01:43:02 UTC 2008    root@palmer.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP amd64

Код работает без опции -pg. Почему происходит сбой кода с -pg. Я что-то пропустил.

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Valgrind определенно работает на amd64, это основная платформа разработки. Так что запуск его под valgrind, безусловно, поможет.

1 голос
/ 01 апреля 2010

Возможно, в вашем коде есть одна или несколько скрытых ошибок, которые проявляются только сейчас, когда вы пытаетесь профилировать с помощью gprof. Попробуйте запустить свой код под valgrind, чтобы убрать все ошибки - исправьте эти ошибки - и затем повторите профилирование.

...