Tinderd Bug - Tinderd killing wrong processes

Tom Judge tom at tomjudge.com
Thu Mar 12 13:15:00 EDT 2009


Joe Marcus Clarke wrote:
> <snip>
>
> What TB is trying to do is kill off processes that are holding a mount
> point open.  In this case, the mount point
> is /data/tinderbox/portstrees/mintel-6-2-mysql-5-0-51/ports.  Any
> process which is using that directory is fair game.  I'm guessing you
> started your jail from within that directory.
>
> As soon as the processes are dead, that directory gets unmounted, so
> things would probably start to fail anyway.
>
> Joe
>
> <snip>
I think the problem is that tinderd is being over zealous with the 
killing of processes.  The sshd/cron/syslogd's are not in that 
directory.  That directory is nullfs mounted off of:

/data/ports/mintel-6-2-mysql-5-0-51

The jails also have this file system mounted in them via nullfs, here is 
are the relevent mount output lines:


/data/ports/mintel-6-2-mysql-5-0-51 on 
/data/tinderbox/portstrees/mintel-6-2-mysql-5-0-51/ports (nullfs, local, 
read-only)
nfs-server:/usr/home on /data/jails/mintel_6_2/usr/home (nfs)
/data/mintelbsd/src/mintel_6_2 on /data/jails/mintel_6_2/usr/src 
(nullfs, local, read-only)
/data/mintelbsd/obj/6_2/amd64 on /data/jails/mintel_6_2/usr/obj (nullfs, 
local)
/data/ports/mintel-6-2-mysql-5-0-51 on /data/jails/mintel_6_2/usr/ports 
(nullfs, local, read-only)
/data/tinderbox/packages/6.2-MySQL-5.0.51 on 
/data/jails/mintel_6_2/usr/ports/packages (nullfs, local, read-only)
devfs on /data/jails/mintel_6_2/dev (devfs, local)
fdescfs on /data/jails/mintel_6_2/dev/fd (fdescfs)

And the jail definition from rc.conf:

jail_mintel62_rootdir="/data/jails/mintel_6_2"
jail_mintel62_hostname="mintel62-build"
jail_mintel62_ip="127.1.0.1"
jail_mintel62_devfs_enable="YES"
jail_mintel62_fdescfs_enable="YES"
jail_mintel62_procfs_enable="NO"
jail_mintel62_mount_enable="YES"
jail_mintel62_fstab="/etc/fstab.mintel_6_2"

%cat /etc/fstab.mintel_6_2
nfs-server:/usr/home                    
/data/jails/mintel_6_2/usr/home            nfs    rw    0    0   
/data/mintelbsd/src/mintel_6_2                
/data/jails/mintel_6_2/usr/src            nullfs    ro    0    0
/data/mintelbsd/obj/6_2/amd64                
/data/jails/mintel_6_2/usr/obj            nullfs    rw    0    0
/data/ports/mintel-6-2-mysql-5-0-51             
/data/jails/mintel_6_2/usr/ports         nullfs     ro     0    0
/data/tinderbox/packages/6.2-MySQL-5.0.51         
/data/jails/mintel_6_2/usr/ports/packages     nullfs     ro     0     0


And the ports tree definition:

mysql>  select * from ports_trees where 
ports_tree_name='mintel-6-2-mysql-5-0-51'\G
*************************** 1. row ***************************
         ports_tree_id: 1
       ports_tree_name: mintel-6-2-mysql-5-0-51
ports_tree_description:  FreeBSD 6.2 MySQL 5.0.51
 ports_tree_last_built: 2009-02-12 16:59:41
 ports_tree_update_cmd: USER
 ports_tree_cvsweb_url: http://viewvc.mintel.co.uk/viewvc.cgi/mintelbsd/
ports_tree_ports_mount: /data/ports/mintel-6-2-mysql-5-0-51
1 row in set (0.00 sec)

mysql>


What process does tinderd use to work out if the tree is in use?  I 
think it may be getting confused by nullfs.  Also I cant see any reason 
that the master sshd process from this jail would ever enter the 
/usr/ports inside the jail chroot.

Surely this is a bug in the process selection code?

Also do the does addPort and addBuildPortsQueueEntry mount the ports 
file system?

Tom




More information about the tinderbox-list mailing list