set_thread_area in strace - PullRequest
       18

set_thread_area in strace

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

Использование strace в программе: strace выводит тот же вывод экстракта в Debian и CentOS, за исключением set_thread_area. (Версия программы одинакова для обоих Linux.)

Почему они разные? Есть ли способ, чтобы вывод был одинаковым на обеих Linux? Можно ли запрограммировать эту разницу на C? В Debian / CentOS отсутствует какой-либо пакет?

set_thread_area({entry_number:-1 -> 6, base_addr:0xb7fb16c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
open("/dev/urandom", O_RDONLY)          = 3
read(3, "\242\177)", 3)                 = 3
set_thread_area(0xff9db33c)             = 0

EDIT
Первый: CentOS i686
Второе: Debian x64, но скомпилированный с -m32

1 Ответ

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

Вы спрашиваете о причине разных адресов или почему strace форматирует вывод по-разному? Если это последнее, я подозреваю, что вы просто имеете дело с двумя разными версиями strace, возможно, одна устаревшая. Однако, кое-что также выглядит странно в этом:

set_thread_area(0xff9db33c)             = 0

Адрес 0xff9db33c определенно не является действительным адресом пространства пользователя на i386. Возможно ли, что одна из ваших систем - x86_64? Это также объясняет другой формат, поскольку set_thread_area на i386 принимает указатель на struct ldt_desc, в то время как на x86_64 он просто принимает фактическое значение указателя для загрузки в регистр потока.

...