Случайный сбой с getpwuid()
У меня есть функция, которая преобразует UID в имена пользователей,
char *uid2name (uid_t uid)
{
struct passwd *pwd = getpwuid (uid);
if (pwd)
return strdup (pwd->pw_name);
return NULL;
}
И я называю это с:
name = uid2name (atoi (blabal));
Иногда происходит сбой с ABRT
или же BUS
ошибка:
(Я знаю, что есть преобразование между целым числом со знаком и без знака, но я протестировал функцию getpwuid с отрицательными значениями, она не вылетает.)
Program received signal SIGBUS, Bus error.
[Switching to Thread 1088039264 (LWP 7572)]
0x00007f504afaff10 in malloc_consolidate () from /lib64/tls/libc.so.6
#0 0x00007f504afaff10 in malloc_consolidate () from /lib64/tls/libc.so.6
#1 0x00007f504afb0f17 in _int_malloc () from /lib64/tls/libc.so.6
#2 0x00007f504afb2c52 in malloc () from /lib64/tls/libc.so.6
#3 0x00007f504afa26ba in __fopen_internal () from /lib64/tls/libc.so.6
#4 0x00007f50499ce04a in internal_setent () from /lib64/libnss_files.so.2
#5 0x00007f50499ce5b0 in _nss_files_getpwuid_r ()
from /lib64/libnss_files.so.2
#6 0x00007f504afd63fd in getpwuid_r@@GLIBC_2.2.5 () from /lib64/tls/libc.so.6
#7 0x00007f504afd5d5d in getpwuid () from /lib64/tls/libc.so.6
#8 0x00007f504b783579 in uid2name (uid=Variable "uid" is not available.
) at XX.c
Есть идеи, что может пойти не так?