[Bug 191936] New: ttyname_r failing isatty always returns ENOTTY instead of the actual error

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Jul 17 22:23:09 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191936

            Bug ID: 191936
           Summary: ttyname_r failing isatty always returns ENOTTY instead
                    of the actual error
           Product: Base System
           Version: 11.0-CURRENT
          Hardware: Any
                OS: Any
            Status: Needs Triage
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: yaneurabeya at gmail.com

Here's the bug I was trying to find with bug 191931 with ttyname_r (it always
assumes that isatty failing means ENOTTY):

 66         /* Must be a terminal. */
 67         if (!isatty(fd))
 68                 return (ENOTTY);

It's always assuming that isatty failing means ENOTTY:

# truss ./t_ttyname ttyname_r_err
mmap(0x0,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34366144512
(0x80061c000)
issetugid(0x80081ca20,0x7fffffffefb2,0x40,0x0,0xffff80080081da6e,0x0) = 0 (0x0)
lstat("/etc",{ mode=drwxr-xr-x ,inode=3129984,size=2560,blksize=32768 }) = 0
(0x0)
lstat("/etc/libmap.conf",{ mode=-rw-r--r-- ,inode=3130014,size=47,blksize=32768
}) = 0 (0x0)
open("/etc/libmap.conf",O_CLOEXEC,01760)         = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=3130014,size=47,blksize=32768 }) = 0 (0x0)
mmap(0x0,47,PROT_READ,MAP_PRIVATE,3,0x0)         = 34366177280 (0x800624000)
close(3)                                         = 0 (0x0)
lstat("/usr",{ mode=drwxr-xr-x ,inode=1364352,size=512,blksize=32768 }) = 0
(0x0)
lstat("/usr/local",{ mode=drwxr-xr-x ,inode=1364363,size=512,blksize=32768 }) =
0 (0x0)
lstat("/usr/local/etc",{ mode=drwxr-xr-x ,inode=1453098,size=512,blksize=32768
}) = 0 (0x0)
lstat("/usr/local/etc/libmap.d",0x7fffffffc748)  ERR#2 'No such file or
directory'
munmap(0x800624000,47)                           = 0 (0x0)
access("/usr/lib/private/libatf-c.so.0",0)       = 0 (0x0)
open("/usr/lib/private/libatf-c.so.0",O_CLOEXEC,030403770) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=1451722,size=90520,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34366177280
(0x800624000)
mmap(0x0,2191360,PROT_NONE,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) =
34368249856 (0x80081e000)
mmap(0x80081e000,86016,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0)
= 34368249856 (0x80081e000)
mmap(0x800a33000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x15000)
= 34370433024 (0x800a33000)
mmap(0x800a34000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0)
= 34370437120 (0x800a34000)
munmap(0x800624000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
access("/usr/lib/private/libc.so.7",0)           ERR#2 'No such file or
directory'
open("/var/run/ld-elf.so.hints",O_CLOEXEC,037777754764) = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0B\0\0\0\0"...,128) = 128 (0x80)
lseek(3,0x80,SEEK_SET)                           = 128 (0x80)
read(3,"/lib:/usr/lib:/usr/lib/compat:/u"...,66) = 66 (0x42)
close(3)                                         = 0 (0x0)
access("/lib/libc.so.7",0)                       = 0 (0x0)
open("/lib/libc.so.7",O_CLOEXEC,030403770)       = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=722339,size=1440008,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34366177280
(0x800624000)
mmap(0x0,3637248,PROT_NONE,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) =
34370441216 (0x800a35000)
mmap(0x800a35000,1396736,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0)
= 34370441216 (0x800a35000)
mmap(0x800d89000,45056,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x154000)
= 34373931008 (0x800d89000)
mmap(0x800d94000,102400,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0)
= 34373976064 (0x800d94000)
munmap(0x800624000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
munmap(0x800623000,4096)                         = 0 (0x0)
mmap(0x0,40960,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34366173184
(0x800623000)
munmap(0x800626000,28672)                        = 0 (0x0)
mmap(0x0,102400,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34366185472
(0x800626000)
sysarch(0x81,0x7fffffffe128,0x4,0x0,0xffffffffff8ae610,0x8080808080808080) = 0
(0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
readlink("/etc/malloc.conf",0x7fffffffd850,1024) ERR#2 'No such file or
directory'
issetugid(0x0,0x7fffffffd850,0xffffffffffffffff,0x2,0x3a,0xffffffff0fffffff) =
0 (0x0)
mmap(0x0,4194304,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) =
34374078464 (0x800dad000)
munmap(0x800dad000,4194304)                      = 0 (0x0)
mmap(0x0,8384512,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) =
34374078464 (0x800dad000)
munmap(0x800dad000,2437120)                      = 0 (0x0)
munmap(0x801400000,1753088)                      = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
mmap(0x0,4194304,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) =
34380709888 (0x801400000)
madvise(0x801406000,0x1000,0x5,0x800dab8f8,0x800dab8f8,0x0) = 0 (0x0)
madvise(0x801408000,0x1000,0x5,0x800dab8f8,0x800dab8f8,0x7fffffffcc90) = 0
(0x0)
__getcwd("/mnt/freebsd-src/lib/libc/tests/gen",1024) = 0 (0x0)
lstat("/mnt/freebsd-src/lib/libc/tests/gen/./t_ttyname",{ mode=-rwxr-xr-x
,inode=893015,size=13564,blksize=4096 }) = 0 (0x0)
pathconf("/dev/",_PC_NAME_MAX)                   = 255 (0xff)
t_ttyname: WARNING: Running test cases without atf-run(1) is unsupported
write(2,"t_ttyname: WARNING: Running test"...,73) = 73 (0x49)
t_ttyname: WARNING: No isolation nor timeout control is being applied; you may
get unexpected failures; see atf-test-case(4)
write(2,"t_ttyname: WARNING: No isolation"...,125) = 125 (0x7d)
ioctl(0,TIOCGETA,0xffffd560)                     = 0 (0x0)
ioctl(0,TIOCGETA,0xffffd530)                     = 0 (0x0)
ioctl(-1,TIOCGETA,0xffffd530)                    ERR#9 'Bad file descriptor'
failed: t_ttyname.c:111: rv == EBADF not met
writev(0x1,0x7fffffffcf50,0x4,0x800a339f0,0xfefefefefefefeff,0x8080808080808080)
= 45 (0x2d)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0)
= 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
process exit, rval = 1

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list