Tinderd Bug - Tinderd killing wrong processes

Joe Marcus Clarke marcus at marcuscom.com
Thu Mar 12 14:41:59 EDT 2009


On Thu, 2009-03-12 at 12:15 -0500, Tom Judge wrote:
> 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

I don't think this is what you want.  If you set this column to NULL in
the database, I think this problem will go away.  Take a look at mine:

mysql> select * from ports_trees where ports_tree_name = 'MarcusCom'\G
*************************** 1. row ***************************
         ports_tree_id: 2
       ports_tree_name: MarcusCom
ports_tree_description:  MarcusCom ports tree
 ports_tree_last_built: 2009-03-12 13:14:30
 ports_tree_update_cmd: USER
 ports_tree_cvsweb_url: http://www.marcuscom.com:8080/cgi-bin/cvsweb.cgi/ports/
ports_tree_ports_mount: NULL
1 row in set (0.00 sec)

Joe


> 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
> 
> 
> 
-- 
PGP Key : http://www.marcuscom.com/pgp.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
URL: <http://marcuscom.com/pipermail/tinderbox-list/attachments/20090312/a3158a14/attachment.bin>


More information about the tinderbox-list mailing list