All,
Mock has a problem setting up /dev/tty and /dev/ptmx in our build chroots. In a standard /dev setup on EL{5,6} and all our current Fedora's, /dev/tty is a character device with major,minor == 5,0, while /dev/ptmx is a character device with major,minor == 5,2. Both are owned by root, group tty, mode 0666. It would follow that our chroots should be setup the same way, but we're seeing test suite failures inside the chroot where the build process hangs.
An early attempt to fix this was where we symlinked /dev/tty and /dev/ptmx to /dev/pts/ptmx (making them pty instances) but that caused other failures. I have a suspicion that we need to do something special to setup the controlling terminal in the chroot, I just don't know what that "special something" is.
The SRPMs that have proven troublesome are:
perl-TermReadKey-2.30-9.fc13.src.rpm bash-4.1.2-5.el6.src.rpm Conn-1.0.32-1.src.rpm libssh2
I did some rough debugging for perl-TermReadKey, where I setup the chroot with /dev/tty and /dev/ptmx as the character devices they should be and when trying to build on F14 with the config fedora-14-x86_64, the build hangs. Attaching gdb to the perl program and getting a partial backtrace shows that it's hung in tcsetattr() (TERMIOS(3)). I looked at the generated C code and saw that there are two instances of tcsetattr() in the code:
if(DisableFlush || oldmode<=mode) tcsetattr(handle,TCSANOW,&work); else tcsetattr(handle,TCSAFLUSH,&work);
The C code is generated in the build process, so I wasn't able to easily add any debug statements to this code and couldn't get the debuginfo into gdb to refine the backtrace, but my guess is that we're hanging on the TCSAFLUSH version.
Anyone have any ideas on this?
Clark
buildsys@lists.fedoraproject.org