trussing a non existing file causes misbehavior

Nikos Vassiliadis nvass at teledomenet.gr
Thu Nov 16 05:46:10 PST 2006


On Thursday 16 November 2006 14:14, Kostik Belousov wrote:
> On Thu, Nov 16, 2006 at 12:26:32PM +0300, Oleg Dambaev wrote:
> > Nikos Vassiliadis wrote:
> > >Hello,
> > >
> > >In my 6.2-PRERELEASE(one month old approximately) truss gets stuck exiting
> > >when trying to truss a non existing file. I think the problem is not in 
> > >truss itself.
> > >But I have not the skills to find it. So, will a build with updated 
> > >sources help?
> > >Is there anybody else with the same problem?
> > >
> > >nik:0:~$ truss /nothing
> > >truss: execvp /nothing: No such file or directory
> > >load: 1.04  cmd: truss 70662 [exithold] 0.00u 0.00s 0% 700k
> > >
> > >Thanks in advance, Nikos
> > >  
> > Never seen any dumbest thing.
> > Re-read truss(1) man page and find out what truss must do.
> 
> I think that rude response is always wrong.

I think too, but it's a public list and everyone finds expression in
his/hers own personal way. So no harm done, one can ignore
an insulting response. I can. That's not the case for everybody,
though.

> There, Nikos reported real, although cosmetic problem since the parent truss
> process sleeps interruptible. The following change shall take care:
> 
> Index: fs/procfs/procfs_ioctl.c
> ===================================================================
> RCS file: /usr/local/arch/ncvs/src/sys/fs/procfs/procfs_ioctl.c,v
> retrieving revision 1.14
> diff -u -r1.14 procfs_ioctl.c
> --- fs/procfs/procfs_ioctl.c	6 Nov 2006 13:41:57 -0000	1.14
> +++ fs/procfs/procfs_ioctl.c	16 Nov 2006 12:13:45 -0000
> @@ -124,7 +124,7 @@
>  		*(unsigned int *)data = p->p_pfsflags;
>  		break;
>  	case PIOCWAIT:
> -		while (p->p_step == 0) {
> +		while (p->p_step == 0 && (p->p_flag & P_WEXIT) == 0) {
>  			/* sleep until p stops */
>  			error = msleep(&p->p_stype, &p->p_mtx,
>  			    PWAIT|PCATCH, "pioctl", 0);
> @@ -142,7 +142,7 @@
>  		break;
>  #ifdef COMPAT_IA32
>  	case PIOCWAIT32:
> -		while (p->p_step == 0) {
> +		while (p->p_step == 0 && (p->p_flag & P_WEXIT) == 0) {
>  			/* sleep until p stops */
>  			error = msleep(&p->p_stype, &p->p_mtx,
>  			    PWAIT|PCATCH, "pioctl", 0);
> 

Could you commit this to HEAD? to be eventually MFC'ed?

Thanks Kostik.

Nikos


More information about the freebsd-stable mailing list