This is the mail archive of the
libc-help@sourceware.org
mailing list for the glibc project.
getlogin() fails on glibc-2.12 and above
- From: Pranav Kuber <pranavkuber at gmail dot com>
- To: libc-help at sourceware dot org
- Date: Tue, 8 Feb 2011 18:03:06 -0500
- Subject: getlogin() fails on glibc-2.12 and above
Hi all,
I am trying to get a simple C program running on RHEL6?x86_64?(gcc
4.4.4) and glibc (v2.12). However, I am getting a Floating Point
Exception (which is very weird for a simple API call into the library
and linking statically).
Here is the exact program -
#include<stdio.h>
#include<unistd.h>
int main(void){
char* name;
? ? ?name = getlogin();
printf("name = %s\n", name);
return;
}
Compiled using this command -
gcc -static -g getlogintest.c -o getlogintest
This works fine for an older version of glibc (I used v2.3.4). I
debugged a bit and found that the call stack has changed for newer
implementations of glibc. (Earlier?getlogin()?used to call
ttyname_r(), and now it calls?__getlogin_r_loginuid()?and so on). I
tried using getlogin_r() too, but fails similarly.
Here is the?bt?-
(gdb) s
Program received signal SIGFPE, Arithmetic exception.
0x000000304f277d63 in _int_free () from /lib64/libc.so.6
(gdb) bt
#0 ?0x000000304f277d63 in _int_free () from /lib64/libc.so.6
#1 ?0x000000304f265e3d in fclose@@GLIBC_2.2.5 () from /lib64/libc.so.6
#2 ?0x00007ffff7dc9f2a in _nss_files_getpwuid_r () from /lib64/libnss_files.so.2
#3 ?0x00000000004366fd in getpwuid_r ()
#4 ?0x000000000040c962 in __getlogin_r_loginuid ()
#5 ?0x000000000040c673 in getlogin ()
#6 ?0x0000000000400449 in main () at getlogintest.c:9
Any idea?
Thanks,
-Pranav