ZFS ACLS and vim

Hi,

Does anyone know a way of making vim preserve ZFS NFSv4 ACLS?

Without disabling file backups in vim that is.

Thanks in advanced.

What OS are you running VIM on?

1 Like

Hi,

This is running on Solaris 11.2 vim 7.3.600

Cheers.

Could you post the output from truss, while you use vim to edit and save a file in a way that destroys the NFSv4 ACLs?

truss -f -a -vall -l -d -o /truss/output/file vim /file/with/nfsv4/acls
1 Like

Hi,

Thanks for answering,

# ls -V 1
-rw-r--r--+  1 root     root           9 Mar 20 08:13 1
                user:lp:rwxp----------:fd-----:allow
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

# truss -f -a -vall -l -d -o truss.out vim 1

# ls -V 1                            
-rw-r--r--   1 root     root          15 Mar 20 08:15 1
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

This is what it does to the backup and original files

339/1:           0.0154 stat64("1", 0xFFBFFA08)                         = 0
339/1:           0.0207 read(3, "1A01 '\0 &\01F\0 i01DD02".., 4097)     = 1607
339/1:           0.0280 write(1, "1B @ 01B [ ? 4 s1B [ ? 4".., 23)      = 23
339/1:           0.0306 stat64("1", 0xFFBFF768)                         = 0
339/1:           0.0308 stat64("1", 0xFFBFF970)                         = 0
339/1:           0.0310 access("1", W_OK)                               = 0
339/1:           0.0311 open64("1", O_RDONLY)                           = 5
339/1:           0.0312 readlink("1", 0xFFBFEEA0, 1023)                 Err#22 EINVAL
339/1:           0.0345 open64("1", O_RDONLY)                           = 5
339/1:           0.0348 write(1, "1B [ 1 ; 3 6 r1B [ m1B [".., 27)      = 27
339/1:           0.0373 write(1, "1B [ 1 ; 1 H s a d f s f".., 2047)    = 2047
339/1:           1.6248 write(1, "1B [ m s s a d f s f d :".., 14)      = 14
339/1:           2.1109 read(0, "1B", 4096)                             = 1
339/1:           2.2635 write(1, "1B [ 3 6 ; 1 H1B [ K1B [".., 18)      = 18
339/1:           2.6966 stat64("1", 0xFFBFF198)                         = 0
339/1:           2.6969 access("1", W_OK)                               = 0
339/1:           2.6983 pathconf("1", _PC_ACL_ENABLED)                  = 2
339/1:           2.6984 acl("1", ACE_GETACLCNT, 0, 0x00000000)          = 5
339/1:           2.6985 stat64("1", 0xFFBFED78)                         = 0
339/1:           2.6987 acl("1", ACE_GETACL, 5, 0x00302118)             = 5
339/1:           2.6990 open64("1", O_RDONLY)                           = 5
339/1:           2.6992 stat64("1~", 0xFFBFEF58)                        Err#2 ENOENT
339/1:           2.6993 unlink("1~")                                    Err#2 ENOENT
339/1:           2.6996 open64("1~", O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0644) = 7
339/1:           2.6997 chmod("1~", 0644)                               = 0
339/1:           2.7008 utimensat(AT_FDCWD, "1~", 0xFFBFEE68, 0)        = 0
339/1:           2.7010 stat64("1~", 0xFFBFED88)                        = 0
339/1:           2.7012 pathconf("1~", _PC_ACL_ENABLED)                 = 2
339/1:           2.7013 acl("1~", ACE_SETACL, 5, 0x00302118)            = 0
339/1:           2.7016 open64("1", O_WRONLY|O_CREAT|O_TRUNC, 0644)     = 5
339/1:           2.7074 chmod("1", 0100644)                             = 0
339/1:           2.7085 unlink("1~")                                    = 0
339/1:           2.7090 write(1, "1B @ 01B [ ? 4 r", 8)                 = 8

And here is the truss full output

Base time stamp:  1426839335.2324  [ Fri Mar 20 08:15:35 GMT 2015 ]
339/1:		 0.0000	execve("/usr/bin/vim", 0xFFBFFD84, 0xFFBFFD90)  argc = 2
339/1:		 argv: vim 1
339/1:		 0.0039	sysinfo(SI_MACHINE, "sun4v", 257)		= 6
339/1:		 0.0040	mmap(0x00000000, 32, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF390000
339/1:		 0.0042	mmap(0x00000000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF380000
339/1:		 0.0043	memcntl(0xFF3A0000, 39820, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
339/1:		 0.0045	mmap(0x00000000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF370000
339/1:		 0.0046	memcntl(0x00010000, 285936, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
339/1:		 0.0047	resolvepath("/usr/bin/vim", "/usr/bin/vim", 1023) = 12
339/1:		 0.0051	resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
339/1:		 0.0052	stat64("/usr/bin/vim", 0xFFBFF8A0)		= 0
339/1:		    d=0x0475001C i=50728 m=0100555 l=1  u=0     g=2     sz=2923008
339/1:			at = Mar 20 08:15:35 GMT 2015  [ 1426839335.236939230 ]
339/1:			mt = Nov 22 08:37:56 GMT 2014  [ 1416645476.000000000 ]
339/1:			ct = Mar 13 19:12:17 GMT 2015  [ 1426273937.248712840 ]
339/1:		    bsz=131072 blks=5897  fs=zfs
339/1:		 0.0055	open("/var/ld/ld.config", O_RDONLY)		Err#2 ENOENT
339/1:		 0.0056	stat64("/lib/libc.so.1", 0xFFBFF008)		= 0
339/1:		    d=0x0475001C i=74335 m=0100755 l=1  u=0     g=2     sz=1835040
339/1:			at = Mar 20 08:15:35 GMT 2015  [ 1426839335.225768700 ]
339/1:			mt = Nov 22 08:37:38 GMT 2014  [ 1416645458.000000000 ]
339/1:			ct = Mar 13 19:11:09 GMT 2015  [ 1426273869.521863540 ]
339/1:		    bsz=131072 blks=3847  fs=zfs
339/1:		 0.0058	resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
339/1:		 0.0059	open("/lib/libc.so.1", O_RDONLY)		= 3
339/1:		 0.0061	mmapobj(3, MMOBJ_INTERPRET, 0xFF380A08, 0xFFBFF09C, 0x00000000) = 0
339/1:		 0.0062	close(3)					= 0
339/1:		 0.0063	mmap(0x00000000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF360000
339/1:		 0.0064	memcntl(0xF6F00000, 255512, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
339/1:		 0.0067	stat64("/lib/libncurses.so.5", 0xFFBFED08)	Err#2 ENOENT
339/1:		 0.0069	stat64("/usr/lib/libncurses.so.5", 0xFFBFED08)	= 0
339/1:		    d=0x0475001C i=50262 m=0100555 l=1  u=0     g=2     sz=605484
339/1:			at = Mar 20 08:13:15 GMT 2015  [ 1426839195.490458940 ]
339/1:			mt = Nov 22 08:37:54 GMT 2014  [ 1416645474.000000000 ]
339/1:			ct = Mar 13 19:13:24 GMT 2015  [ 1426274004.496726770 ]
339/1:		    bsz=131072 blks=1285  fs=zfs
339/1:		 0.0070	resolvepath("/usr/lib/libncurses.so.5", "/usr/lib/libncurses.so.5.7", 1023) = 26
339/1:		 0.0071	open("/usr/lib/libncurses.so.5", O_RDONLY)	= 3
339/1:		 0.0073	mmapobj(3, MMOBJ_INTERPRET, 0xFF362ED8, 0xFFBFED9C, 0x00000000) = 0
339/1:		 0.0074	close(3)					= 0
339/1:		 0.0075	memcntl(0xFF2E0000, 64312, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
339/1:		 0.0076	stat64("/usr/gnu/lib/libc.so.1", 0xFFBFEC20)	Err#2 ENOENT
339/1:		 0.0089	mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF2D0000
339/1:		 0.0091	getcontext(0xFFBFF718)
339/1:		 0.0092	getrlimit(RLIMIT_STACK, 0xFFBFF708)		= 0
339/1:			cur = 8388608  max = RLIM_INFINITY
339/1:		 0.0093	getpid()					= 339 [338]
339/1:		 0.0094	setustack(0xFF2D2AC8)
339/1:		 0.0097	brk(0x00000000)					= 0x00300000
339/1:		 0.0098	brk(0x00300000)					= 0x00000000
339/1:		 0.0099	brk(0x00304000)					= 0x00000000
339/1:		 0.0100	sigaltstack(0x002F4870, 0x00000000)		= 0
339/1:			new: sp=0x00300008 size=8192 flags=0x0000
339/1:		 0.0109	stat64("/usr/share/vim/vim73", 0xFFBFFA28)	= 0
339/1:		    d=0x0475001C i=1639  m=0040755 l=3  u=0     g=2     sz=3
339/1:			at = Mar 19 18:33:35 GMT 2015  [ 1426790015.992858610 ]
339/1:			mt = Nov 29 10:52:04 GMT 2013  [ 1385722324.796366220 ]
339/1:			ct = Nov 29 10:52:04 GMT 2013  [ 1385722324.796366220 ]
339/1:		    bsz=512   blks=3     fs=zfs
339/1:		 0.0112	brk(0x00304000)					= 0x00000000
339/1:		 0.0112	brk(0x00306000)					= 0x00000000
339/1:		 0.0115	ioctl(1, TCGETA, 0xFFBFFB8C)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0119	brk(0x00306000)					= 0x00000000
339/1:		 0.0119	brk(0x00308000)					= 0x00000000
339/1:		 0.0124	getcwd("/net/sysadm-nfs/sysmsol/catalogue/scripts", 1024) = 0
339/1:		 0.0126	chdir("/net/sysadm-nfs/sysmsol/catalogue/scripts") = 0
339/1:		 0.0127	chdir("/root")					= 0
339/1:		 0.0128	getcwd("/root", 1025)				= 0
339/1:		 0.0129	chdir("/net/sysadm-nfs/sysmsol/catalogue/scripts") = 0
339/1:		 0.0133	sysconfig(_CONFIG_PAGESIZE)			= 8192
339/1:		 0.0134	sysconfig(_CONFIG_PHYS_PAGES)			= 2097152
339/1:		 0.0134	getrlimit64(RLIMIT_DATA, 0xFFBFFB60)		= 0
339/1:			cur = RLIM64_INFINITY  max = RLIM64_INFINITY
339/1:		 0.0137	getuid()					= 0 [0]
339/1:		 0.0143	stat64("/usr/share/vim", 0xFFBFF960)		= 0
339/1:		    d=0x0475001C i=1638  m=0040755 l=3  u=0     g=2     sz=3
339/1:			at = Mar 19 18:33:35 GMT 2015  [ 1426790015.992876110 ]
339/1:			mt = Nov 29 10:52:04 GMT 2013  [ 1385722324.795331160 ]
339/1:			ct = Nov 29 10:52:04 GMT 2013  [ 1385722324.795331160 ]
339/1:		    bsz=512   blks=3     fs=zfs
339/1:		 0.0146	brk(0x00308000)					= 0x00000000
339/1:		 0.0147	brk(0x00308000)					= 0x00000000
339/1:		 0.0148	brk(0x0030A000)					= 0x00000000
339/1:		 0.0153	getcwd("/net/sysadm-nfs/sysmsol/catalogue/scripts", 1024) = 0
339/1:		 0.0154	stat64("1", 0xFFBFFA08)				= 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.378895980 ]
339/1:			ct = Mar 20 08:13:19 GMT 2015  [ 1426839199.384427800 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 0.0160	sigfillset(0xF707ADD4)				= 0
339/1:			sigmask = 0xFFFFFFFF 0xFFFFFFFF 0x000000FF 0
339/1:		 0.0162	schedctl()					= 0xFF2C4000
339/1:		 0.0163	sigaction(SIGWINCH, 0xFFBFFA40, 0xFFBFFB00)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0000
339/1:		    old: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0000
339/1:		 0.0164	lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000, 0x00000000, 0x00000000) = 0xFFBFFEFF [0xFFFFFFFF]
339/1:		 0.0166	sigaction(SIGTSTP, 0xFFBFFA40, 0xFFBFFB00)	= 0
339/1:		    new: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0004
339/1:		    old: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0000
339/1:		 0.0167	lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000, 0x00000000, 0x00000000) = 0xFFBFFEFF [0xFFFFFFFF]
339/1:		 0.0168	sigaction(SIGPIPE, 0xFFBFFA40, 0xFFBFFB00)	= 0
339/1:		    new: hand = 0x00000001 mask = 0 0 0 0 flags = 0x0000
339/1:		    old: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0000
339/1:		 0.0169	lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000, 0x00000000, 0x00000000) = 0xFFBFFEFF [0xFFFFFFFF]
339/1:		 0.0170	sigaction(SIGINT, 0xFFBFF9E0, 0xFFBFFAA0)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0000
339/1:		    old: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0000
339/1:		 0.0171	lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000, 0x00000000, 0x00000000) = 0xFFBFFEFF [0xFFFFFFFF]
339/1:		 0.0171	sigaction(SIGALRM, 0xFFBFFA40, 0xFFBFFB00)	= 0
339/1:		    new: hand = 0x00000001 mask = 0 0 0 0 flags = 0x0000
339/1:		    old: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0000
339/1:		 0.0173	lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000, 0x00000000, 0x00000000) = 0xFFBFFEFF [0xFFFFFFFF]
339/1:		 0.0173	sigaction(SIGPWR, 0xFFBFFA40, 0xFFBFFB00)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0000
339/1:		    old: hand = 0x00000000 mask = 0 0 0 0 flags = 0x0000
339/1:		 0.0175	lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000, 0x00000000, 0x00000000) = 0xFFBFFEFF [0xFFFFFFFF]
339/1:		 0.0175	sigaction(SIGHUP, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0176	sigaction(SIGQUIT, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0177	sigaction(SIGILL, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0178	sigaction(SIGTRAP, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0179	sigaction(SIGABRT, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0180	sigaction(SIGEMT, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0182	sigaction(SIGFPE, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0183	sigaction(SIGBUS, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0184	sigaction(SIGSEGV, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0185	sigaction(SIGSYS, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0186	sigaction(SIGTERM, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0187	sigaction(SIGPROF, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0188	sigaction(SIGXCPU, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0189	sigaction(SIGXFSZ, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0190	sigaction(SIGUSR1, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0191	sigaction(SIGUSR2, 0xFFBFFA78, 0x00000000)	= 0
339/1:		    new: hand = 0xF6FCB32C mask = 0xFFBFFEFF 0xFFFFFFFF 0x000000FF 0 flags = 0x0001
339/1:		 0.0192	ioctl(0, TCGETA, 0xFFBFFB24)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0197	ioctl(1, TCGETA, 0xFFBFEDC4)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0200	stat64("/root/.terminfo", 0xFFBFDCD0)		Err#2 ENOENT
339/1:		 0.0202	stat64("/usr/gnu/share/terminfo", 0xFFBFDCD0)	= 0
339/1:		    d=0x0475001C i=270   m=0040755 l=44 u=0     g=2     sz=44
339/1:			at = Mar 19 18:36:18 GMT 2015  [ 1426790178.284152340 ]
339/1:			mt = Nov 29 10:52:02 GMT 2013  [ 1385722322.614041560 ]
339/1:			ct = Nov 29 10:52:02 GMT 2013  [ 1385722322.614041560 ]
339/1:		    bsz=3072  blks=5     fs=zfs
339/1:		 0.0204	access("/usr/gnu/share/terminfo/x/xtermc", R_OK) = 0
339/1:		 0.0205	open64("/usr/gnu/share/terminfo/x/xtermc", O_RDONLY) = 3
339/1:		 0.0207	read(3, "1A01 '\0 &\01F\0 i01DD02".., 4097)	= 1607
339/1:		 0.0208	brk(0x0030A000)					= 0x00000000
339/1:		 0.0209	brk(0x0030C000)					= 0x00000000
339/1:		 0.0210	close(3)					= 0
339/1:		 0.0211	ioctl(1, TCGETA, 0xFFBFEDC4)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0213	ioctl(1, TCGETS, 0x00307530)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=03600277 lflag=0105073
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:				 021 023 032 031 022 017 027 026 000 000 000
339/1:		 0.0215	ioctl(1, TCGETA, 0xFFBFED5C)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0216	ioctl(1, TIOCGWINSZ, 0xFFBFEDD0)		= 0
339/1:			row=36  col=168 xpixel=0   ypixel=0  
339/1:		 0.0219	ioctl(0, TCGETS, 0xFFBFF2DC)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=03600277 lflag=0105073
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:				 021 023 032 031 022 017 027 026 000 000 000
339/1:		 0.0221	ioctl(1, TCGETA, 0xFFBFF1AC)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0223	ioctl(1, TIOCGWINSZ, 0xFFBFF228)		= 0
339/1:			row=36  col=168 xpixel=0   ypixel=0  
339/1:		 0.0227	brk(0x0030C000)					= 0x00000000
339/1:		 0.0228	brk(0x00310000)					= 0x00000000
339/1:		 0.0228	ioctl(1, TCGETA, 0xFFBFFB0C)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=0000277 lflag=0105073 line=0
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:		 0.0230	ioctl(1, TIOCGWINSZ, 0xFFBFFB88)		= 0
339/1:			row=36  col=168 xpixel=0   ypixel=0  
339/1:		 0.0236	open64(".", O_RDONLY)				= 3
339/1:		 0.0238	fchdir(3)					= 0
339/1:		 0.0238	chdir("/usr/share/vim")				= 0
339/1:		 0.0240	getcwd("/usr/share/vim", 1024)			= 0
339/1:		 0.0241	fchdir(3)					= 0
339/1:		 0.0242	close(3)					= 0
339/1:		 0.0242	stat64("/usr/share/vim/vimrc", 0xFFBFF990)	Err#2 ENOENT
339/1:		 0.0244	open64("/usr/share/vim/vimrc", O_RDONLY)	Err#2 ENOENT
339/1:		 0.0245	open64(".", O_RDONLY)				= 3
339/1:		 0.0246	fchdir(3)					= 0
339/1:		 0.0247	chdir("/root")					= 0
339/1:		 0.0248	getcwd("/root", 1024)				= 0
339/1:		 0.0249	fchdir(3)					= 0
339/1:		 0.0249	close(3)					= 0
339/1:		 0.0250	stat64("/root/.vimrc", 0xFFBFF990)		Err#2 ENOENT
339/1:		 0.0252	open64("/root/.vimrc", O_RDONLY)		Err#2 ENOENT
339/1:		 0.0253	open64("/root/_vimrc", O_RDONLY)		Err#2 ENOENT
339/1:		 0.0255	open64(".", O_RDONLY)				= 3
339/1:		 0.0256	fchdir(3)					= 0
339/1:		 0.0256	chdir("/root")					= 0
339/1:		 0.0257	getcwd("/root", 1024)				= 0
339/1:		 0.0258	fchdir(3)					= 0
339/1:		 0.0259	close(3)					= 0
339/1:		 0.0260	stat64("/root/.exrc", 0xFFBFF990)		Err#2 ENOENT
339/1:		 0.0261	open64("/root/.exrc", O_RDONLY)			Err#2 ENOENT
339/1:		 0.0264	open("/root/.vim/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0265	open("/root/.vim/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0266	open("/usr/share/vim/vimfiles/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0268	open("/usr/share/vim/vimfiles/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0269	open("/usr/share/vim/vim73/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0270	open("/usr/share/vim/vim73/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0272	open("/usr/share/vim/vimfiles/after/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0273	open("/usr/share/vim/vimfiles/after/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0274	open("/root/.vim/after/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0275	open("/root/.vim/after/plugin/", O_RDONLY|O_NDELAY|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) Err#2 ENOENT
339/1:		 0.0277	ioctl(0, TCGETS, 0x002F487C)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=03600277 lflag=0105073
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:				 021 023 032 031 022 017 027 026 000 000 000
339/1:		 0.0279	ioctl(0, TCSETS, 0xFFBFFB84)			= 0
339/1:			iflag=0022002 oflag=0014001 cflag=03600277 lflag=0005040
339/1:			    cc:  003 034 177 025 001 000 000 000
339/1:				 021 023 032 031 022 017 027 026 000 000 000
339/1:		 0.0280	write(1, "1B @ 01B [ ? 4 s1B [ ? 4".., 23)	= 23
339/1:		 0.0283	brk(0x00310000)					= 0x00000000
339/1:		 0.0284	brk(0x00312000)					= 0x00000000
339/1:		 0.0286	stat64("/net/sysadm-nfs/sysmsol/catalogue/scripts/1", 0xFFBFF9F0) = 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.378895980 ]
339/1:			ct = Mar 20 08:13:19 GMT 2015  [ 1426839199.384427800 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 0.0288	getuid()					= 0 [0]
339/1:		 0.0289	getuid()					= 0 [0]
339/1:		 0.0290	getpid()					= 339 [338]
339/1:		 0.0291	open("/proc/339/psinfo", O_RDONLY)		= 3
339/1:		 0.0292	read(3, "02\0\0\0\0\0\001\0\001 S".., 336)	= 336
339/1:		 0.0293	close(3)					= 0
339/1:		 0.0294	mmap(0x00010000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF2B0000
339/1:		 0.0296	getuid()					= 0 [0]
339/1:		 0.0296	getuid()					= 0 [0]
339/1:		 0.0297	open64("/system/volatile/name_service_door", O_RDONLY) = 3
339/1:		 0.0298	fcntl(3, F_SETFD, 0x00000001)			= 0
339/1:		 0.0299	door_info(3, 0xF7071F78)			= 0
339/1:			target=7849 proc=0x31E48 data=0xDEADBEED
339/1:			attributes=DOOR_UNREF|DOOR_NO_CANCEL
339/1:			uniquifier=6809
339/1:		 0.0301	door_call(3, 0xFFBFF6D4)			= 0
339/1:			data_ptr=FF2B0000 data_size=210
339/1:			desc_ptr=0x0 desc_num=0
339/1:			rbuf=0xFF2B0000 rsize=16384
339/1:		 0.0302	uname(0xFFBFF583)				= 1
339/1:			sys=SunOS nod=sysadm-nfs rel=5.11 ver=11.2 mch=sun4v
339/1:		 0.0303	getpid()					= 339 [338]
339/1:		 0.0304	brk(0x00312000)					= 0x00000000
339/1:		 0.0305	brk(0x00314000)					= 0x00000000
339/1:		 0.0306	stat64("1", 0xFFBFF768)				= 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.378895980 ]
339/1:			ct = Mar 20 08:13:19 GMT 2015  [ 1426839199.384427800 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 0.0308	stat64("1", 0xFFBFF970)				= 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.378895980 ]
339/1:			ct = Mar 20 08:13:19 GMT 2015  [ 1426839199.384427800 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 0.0310	access("1", W_OK)				= 0
339/1:		 0.0311	open64("1", O_RDONLY)				= 5
339/1:		 0.0312	readlink("1", 0xFFBFEEA0, 1023)			Err#22 EINVAL
339/1:		 0.0314	open64(".1.swp", O_RDONLY)			Err#2 ENOENT
339/1:		 0.0317	open64(".1.swp", O_RDWR|O_CREAT|O_EXCL, 0600)	= 6
339/1:		 0.0318	open64(".1.swpx", O_RDONLY)			Err#2 ENOENT
339/1:		 0.0319	open64(".1.swpx", O_RDWR|O_CREAT|O_EXCL, 0600)	= 7
339/1:		 0.0320	fstat64(6, 0xFFBFF680)				= 0
339/1:		    d=0x04750024 i=5652  m=0100600 l=1  u=0     g=0     sz=0
339/1:			at = Mar 20 08:15:35 GMT 2015  [ 1426839335.264059350 ]
339/1:			mt = Mar 20 08:15:35 GMT 2015  [ 1426839335.264059350 ]
339/1:			ct = Mar 20 08:15:35 GMT 2015  [ 1426839335.264059350 ]
339/1:		    bsz=131072 blks=1     fs=lofs
339/1:		 0.0322	fstat64(7, 0xFFBFF5E8)				= 0
339/1:		    d=0x04750024 i=5653  m=0100600 l=1  u=0     g=0     sz=0
339/1:			at = Mar 20 08:15:35 GMT 2015  [ 1426839335.264376870 ]
339/1:			mt = Mar 20 08:15:35 GMT 2015  [ 1426839335.264376870 ]
339/1:			ct = Mar 20 08:15:35 GMT 2015  [ 1426839335.264376870 ]
339/1:		    bsz=131072 blks=1     fs=lofs
339/1:		 0.0323	close(7)					= 0
339/1:		 0.0324	unlink(".1.swpx")				= 0
339/1:		 0.0325	close(6)					= 0
339/1:		 0.0326	unlink(".1.swp")				= 0
339/1:		 0.0327	stat64(".1.swp", 0xFFBFF210)			Err#2 ENOENT
339/1:		 0.0328	lstat64(".1.swp", 0xFFBFF688)			Err#2 ENOENT
339/1:		 0.0330	getcwd("/net/sysadm-nfs/sysmsol/catalogue/scripts", 1024) = 0
339/1:		 0.0332	lstat64(".1.swp", 0xFFBFF638)			Err#2 ENOENT
339/1:		 0.0334	open64(".1.swp", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, 0600) = 6
339/1:		 0.0335	fcntl(6, F_GETFD, 0x00020502)			= 0
339/1:		 0.0336	fcntl(6, F_SETFD, 0x00000001)			= 0
339/1:		 0.0336	getcwd("/net/sysadm-nfs/sysmsol/catalogue/scripts", 1024) = 0
339/1:		 0.0338	llseek(6, 0, SEEK_SET)				= 0
339/1:		 0.0339	write(6, " b 0 V I M   7 . 3\0\0\0".., 4096)	= 4096
339/1:		 0.0340	pollsys(0xFFBFF3F8, 1, 0xFFBFF470, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 0.0342	chmod(".1.swp", 0644)				= 0
339/1:		 0.0344	close(5)					= 0
339/1:		 0.0345	open64("1", O_RDONLY)				= 5
339/1:		 0.0348	write(1, "1B [ 1 ; 3 6 r1B [ m1B [".., 27)	= 27
339/1:		 0.0350	brk(0x00314000)					= 0x00000000
339/1:		 0.0351	brk(0x00324000)					= 0x00000000
339/1:		 0.0353	read(5, " s a d f s f d :\n", 8192)		= 9
339/1:		 0.0354	pollsys(0xFFBFF538, 1, 0xFFBFF5B0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 0.0356	brk(0x00324000)					= 0x00000000
339/1:		 0.0356	brk(0x00334000)					= 0x00000000
339/1:		 0.0357	read(5, 0x00322AE8, 65536)			= 0
339/1:		 0.0358	close(5)					= 0
339/1:		 0.0360	write(1, "   1   l i n e ,   9   c".., 21)	= 21
339/1:		 0.0362	pollsys(0xFFBFF8C0, 1, 0xFFBFF938, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 0.0364	pollsys(0xFFBFF8C0, 1, 0xFFBFF938, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 0.0366	getcwd("/net/sysadm-nfs/sysmsol/catalogue/scripts", 1024) = 0
339/1:		 0.0373	write(1, "1B [ 1 ; 1 H s a d f s f".., 2047)	= 2047
339/1:		 0.0375	write(1, "                        ".., 2047)	= 2047
339/1:		 0.0380	pollsys(0xFFBFF5A0, 1, 0xFFBFF618, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 0.0382	write(1, "                        ".., 1873)	= 1873
339/1:		pollsys(0xFFBFF418, 1, 0xFFBFF490, 0x00000000) (sleeping...)
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 4.000000000 sec
339/1:		 1.5584	pollsys(0xFFBFF418, 1, 0xFFBFF490, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 1.5588	pollsys(0xFFBFF418, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 1.5590	read(0, " i", 4096)				= 1
339/1:		 1.5592	pollsys(0xFFBFF5A0, 1, 0xFFBFF618, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.5596	pollsys(0xFFBFF458, 1, 0xFFBFF4D0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.5597	pollsys(0xFFBFF2D0, 1, 0xFFBFF348, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.5599	pollsys(0xFFBFF3E8, 1, 0xFFBFF460, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.5601	pollsys(0xFFBFF260, 1, 0xFFBFF2D8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.5602	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6222	pollsys(0xFFBFF2A0, 1, 0xFFBFF318, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 1.6226	pollsys(0xFFBFF2A0, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 1.6227	read(0, " s", 4096)				= 1
339/1:		 1.6228	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6233	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6234	pollsys(0xFFBFF1E0, 1, 0xFFBFF258, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6236	llseek(6, 0, SEEK_SET)				= 0
339/1:		 1.6237	write(6, " b 0 V I M   7 . 3\0\0\0".., 4096)	= 4096
339/1:		 1.6238	pollsys(0xFFBFF0F8, 1, 0xFFBFF170, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6240	pollsys(0xFFBFF458, 1, 0xFFBFF4D0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6241	pollsys(0xFFBFF2D0, 1, 0xFFBFF348, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6243	pollsys(0xFFBFF3E8, 1, 0xFFBFF460, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6244	pollsys(0xFFBFF260, 1, 0xFFBFF2D8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6246	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6248	write(1, "1B [ m s s a d f s f d :".., 14)	= 14
339/1:		 1.6943	pollsys(0xFFBFF2A0, 1, 0xFFBFF318, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 1.6946	pollsys(0xFFBFF2A0, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 1.6948	read(0, " d", 4096)				= 1
339/1:		 1.6949	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6951	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6952	pollsys(0xFFBFF1E0, 1, 0xFFBFF258, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6954	pollsys(0xFFBFF458, 1, 0xFFBFF4D0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6955	pollsys(0xFFBFF2D0, 1, 0xFFBFF348, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6956	pollsys(0xFFBFF3E8, 1, 0xFFBFF460, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6958	pollsys(0xFFBFF260, 1, 0xFFBFF2D8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6960	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.6962	write(1, " d s a d f s f d :\r s d", 12)	= 12
339/1:		 1.7508	pollsys(0xFFBFF2A0, 1, 0xFFBFF318, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 1.7511	pollsys(0xFFBFF2A0, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 1.7513	read(0, " f", 4096)				= 1
339/1:		 1.7514	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7516	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7517	pollsys(0xFFBFF1E0, 1, 0xFFBFF258, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7518	pollsys(0xFFBFF458, 1, 0xFFBFF4D0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7520	pollsys(0xFFBFF2D0, 1, 0xFFBFF348, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7521	pollsys(0xFFBFF3E8, 1, 0xFFBFF460, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7522	pollsys(0xFFBFF260, 1, 0xFFBFF2D8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7525	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.7526	write(1, " f s a d f s f d :\r s d".., 13)	= 13
339/1:		 1.8544	pollsys(0xFFBFF2A0, 1, 0xFFBFF318, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 1.8547	pollsys(0xFFBFF2A0, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 1.8548	read(0, " s", 4096)				= 1
339/1:		 1.8550	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8552	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8553	pollsys(0xFFBFF1E0, 1, 0xFFBFF258, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8554	pollsys(0xFFBFF458, 1, 0xFFBFF4D0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8556	pollsys(0xFFBFF2D0, 1, 0xFFBFF348, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8557	pollsys(0xFFBFF3E8, 1, 0xFFBFF460, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8558	pollsys(0xFFBFF260, 1, 0xFFBFF2D8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8561	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.8563	write(1, " s s a d f s f d :\r s d".., 14)	= 14
339/1:		 1.9103	pollsys(0xFFBFF2A0, 1, 0xFFBFF318, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 1.9106	pollsys(0xFFBFF2A0, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 1.9108	read(0, " f", 4096)				= 1
339/1:		 1.9109	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 0.000000000 sec
339/1:		 1.9110	read(0, " d", 4096)				= 1
339/1:		 1.9112	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9113	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9114	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9116	pollsys(0xFFBFF338, 1, 0xFFBFF3B0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9117	pollsys(0xFFBFF368, 1, 0xFFBFF3E0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9118	pollsys(0xFFBFF1E0, 1, 0xFFBFF258, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9120	pollsys(0xFFBFF458, 1, 0xFFBFF4D0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9121	pollsys(0xFFBFF2D0, 1, 0xFFBFF348, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9122	pollsys(0xFFBFF3E8, 1, 0xFFBFF460, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9124	pollsys(0xFFBFF260, 1, 0xFFBFF2D8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9126	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 1.9128	write(1, " f d s a d f s f d :1B [".., 16)	= 16
339/1:		 2.1104	pollsys(0xFFBFF2A0, 1, 0xFFBFF318, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 2.1107	pollsys(0xFFBFF2A0, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 2.1109	read(0, "1B", 4096)				= 1
339/1:		 2.1110	pollsys(0xFFBFF428, 1, 0xFFBFF4A0, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.1113	pollsys(0xFFBFF5A0, 1, 0xFFBFF618, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.1114	write(1, "\b", 1)				= 1
339/1:		 2.2623	pollsys(0xFFBFF418, 1, 0xFFBFF490, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 2.2626	pollsys(0xFFBFF418, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 2.2628	read(0, " :", 4096)				= 1
339/1:		 2.2629	pollsys(0xFFBFF5A0, 1, 0xFFBFF618, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.2635	write(1, "1B [ 3 6 ; 1 H1B [ K1B [".., 18)	= 18
339/1:		 2.2637	ioctl(0, TCSETS, 0xFFBFF374)			= 0
339/1:			iflag=0022002 oflag=0014001 cflag=03600277 lflag=0005040
339/1:			    cc:  003 034 177 025 001 000 000 000
339/1:				 021 023 032 031 022 017 027 026 000 000 000
339/1:		 2.2639	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.3984	pollsys(0xFFBFEDC8, 1, 0xFFBFEE40, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 2.3987	pollsys(0xFFBFEDC8, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 2.3988	read(0, " w", 4096)				= 1
339/1:		 2.3990	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.3992	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.3994	write(1, " w", 1)				= 1
339/1:		 2.4624	pollsys(0xFFBFEDC8, 1, 0xFFBFEE40, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 2.4627	pollsys(0xFFBFEDC8, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 2.4628	read(0, " q", 4096)				= 1
339/1:		 2.4630	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.4632	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.4633	write(1, " q", 1)				= 1
339/1:		 2.6305	pollsys(0xFFBFEDC8, 1, 0xFFBFEE40, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 2.6308	pollsys(0xFFBFEDC8, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 2.6309	read(0, " !", 4096)				= 1
339/1:		 2.6311	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.6313	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.6314	write(1, " !", 1)				= 1
339/1:		 2.6950	pollsys(0xFFBFEDC8, 1, 0xFFBFEE40, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:			timeout: 4.000000000 sec
339/1:		 2.6953	pollsys(0xFFBFEDC8, 1, 0x00000000, 0x00000000)	= 1
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=POLLRDNORM
339/1:		 2.6955	read(0, "\r", 4096)				= 1
339/1:		 2.6956	pollsys(0xFFBFEF50, 1, 0xFFBFEFC8, 0x00000000)	= 0
339/1:			fd=0  ev=POLLRDNORM|POLLRDBAND rev=0
339/1:			timeout: 0.000000000 sec
339/1:		 2.6958	write(1, "\r", 1)				= 1
339/1:		 2.6963	ioctl(0, TCSETS, 0xFFBFEE64)			= 0
339/1:			iflag=0022402 oflag=0014005 cflag=03600277 lflag=0105073
339/1:			    cc:  003 034 177 025 004 000 000 000
339/1:				 021 023 032 031 022 017 027 026 000 000 000
339/1:		 2.6965	write(1, " " 1 "  ", 4)				= 4
339/1:		 2.6966	stat64("1", 0xFFBFF198)				= 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.378895980 ]
339/1:			ct = Mar 20 08:13:19 GMT 2015  [ 1426839199.384427800 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 2.6969	access("1", W_OK)				= 0
339/1:		 2.6971	stat64("/lib/libsec.so.1", 0xFFBFE330)		= 0
339/1:		    d=0x0475001C i=74396 m=0100755 l=1  u=0     g=2     sz=100208
339/1:			at = Mar 20 08:13:45 GMT 2015  [ 1426839225.601147300 ]
339/1:			mt = Nov 22 08:37:38 GMT 2014  [ 1416645458.000000000 ]
339/1:			ct = Mar 13 19:11:12 GMT 2015  [ 1426273872.094893680 ]
339/1:		    bsz=100352 blks=197   fs=zfs
339/1:		 2.6973	resolvepath("/lib/libsec.so.1", "/lib/libsec.so.1", 1023) = 16
339/1:		 2.6974	open("/lib/libsec.so.1", O_RDONLY)		= 5
339/1:		 2.6976	mmapobj(5, MMOBJ_INTERPRET, 0xFF3818A0, 0xFFBFE3C4, 0x00000000) = 0
339/1:		 2.6977	close(5)					= 0
339/1:		 2.6978	memcntl(0xFF290000, 18876, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
339/1:		 2.6979	mmap(0x00000000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF280000
339/1:		 2.6983	pathconf("1", _PC_ACL_ENABLED)			= 2
339/1:		 2.6984	acl("1", ACE_GETACLCNT, 0, 0x00000000)		= 5
339/1:		 2.6985	stat64("1", 0xFFBFED78)				= 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.378895980 ]
339/1:			ct = Mar 20 08:13:19 GMT 2015  [ 1426839199.384427800 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 2.6987	acl("1", ACE_GETACL, 5, 0x00302118)		= 5
339/1:		 2.6990	open64("1", O_RDONLY)				= 5
339/1:		 2.6992	stat64("1~", 0xFFBFEF58)			Err#2 ENOENT
339/1:		 2.6993	unlink("1~")					Err#2 ENOENT
339/1:		 2.6996	open64("1~", O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0644) = 7
339/1:		 2.6997	chmod("1~", 0644)				= 0
339/1:		 2.6998	read(5, " s a d f s f d :\n", 8192)		= 9
339/1:		 2.7004	write(7, " s a d f s f d :\n", 9)		= 9
339/1:		 2.7005	read(5, 0x00315608, 8192)			= 0
339/1:		 2.7006	close(7)					= 0
339/1:		 2.7007	uucopy(0xFFBFEEE0, 0xFFBFEE78, 8)		= 0
339/1:		 2.7008	utimensat(AT_FDCWD, "1~", 0xFFBFEE68, 0)	= 0
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.000000000 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.000000000 ]
339/1:		 2.7010	stat64("1~", 0xFFBFED88)			= 0
339/1:		    d=0x04750024 i=5655  m=0100644 l=1  u=0     g=0     sz=9
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.000000000 ]
339/1:			mt = Mar 20 08:13:19 GMT 2015  [ 1426839199.000000000 ]
339/1:			ct = Mar 20 08:15:37 GMT 2015  [ 1426839337.932970500 ]
339/1:		    bsz=512   blks=1     fs=lofs
339/1:		 2.7012	pathconf("1~", _PC_ACL_ENABLED)			= 2
339/1:		 2.7013	acl("1~", ACE_SETACL, 5, 0x00302118)		= 0
339/1:		 2.7014	close(5)					= 0
339/1:		 2.7016	open64("1", O_WRONLY|O_CREAT|O_TRUNC, 0644)	= 5
339/1:		 2.7023	write(5, " s d f s f d s a d f s f".., 15)	= 15
339/1:		 2.7071	fdsync(5, FSYNC)				= 0
339/1:		 2.7073	close(5)					= 0
339/1:		 2.7074	chmod("1", 0100644)				= 0
339/1:		 2.7076	write(1, " 1   l i n e ,   1 5   c".., 29)	= 29
339/1:		 2.7078	llseek(6, 0, SEEK_SET)				= 0
339/1:		 2.7079	write(6, " b 0 V I M   7 . 3\0\0\0".., 4096)	= 4096
339/1:		 2.7081	stat64("/net/sysadm-nfs/sysmsol/catalogue/scripts/1", 0xFFBFED80) = 0
339/1:		    d=0x04750024 i=5650  m=0100644 l=1  u=0     g=0     sz=15
339/1:			at = Mar 20 08:13:19 GMT 2015  [ 1426839199.378227980 ]
339/1:			mt = Mar 20 08:15:37 GMT 2015  [ 1426839337.934475780 ]
339/1:			ct = Mar 20 08:15:37 GMT 2015  [ 1426839337.939578950 ]
339/1:		    bsz=512   blks=2     fs=lofs
339/1:		 2.7085	unlink("1~")					= 0
339/1:		 2.7088	write(1, "\r\r\n1B [ ? 1 l1B >", 10)		= 10
339/1:		 2.7090	write(1, "1B @ 01B [ ? 4 r", 8)			= 8
339/1:		 2.7091	close(6)					= 0
339/1:		 2.7093	unlink("/net/sysadm-nfs/sysmsol/catalogue/scripts/.1.swp") = 0
339/1:		 2.7095	_exit(0)

The chmod() at 2.7074 is probably the culprit.

You can start up this dtrace script as root, then use vim to cause ACLs to disappear:

#!/usr/sbin/dtrace -s

#pragma D option flowindent

syscall::fchmodat:entry
/execname=="vim"/
{
    printf( "%s, 0x%x\n", execname, arg1 );
    self->trace = 1;
}

syscall::fchmodat:return
/self->trace/
{
    self->trace = 0;
}

fbt:::
/self->trace/
{
}

That'll show what's going on under the hood.

To verify that it's indeed that chmod() call that's blowing away the ACLs, take this C code:

int chmod( const char *name, unsigned int mode )
{
    return( 0 );
}

Compile it:

gcc -m32 -shared chmod.c -o chmod.so (gcc)

or

cc -G chmod.c -o chmod.so (Sun Studio)

Set your LD_PRELOAD_32:

export LD_PRELOAD_32=/path/to/chmod.so

Rerun vim from the same shell you set LD_PRELOAD_32 in.

If the ACLs are preserved, it's a bug in vim.

Oh yeah - don't do anything else from the bash session where you have the LD_PRELOAD set. Things aren't going to behave well with chmod() stubbed out like that.

And I recommend you never, ever use just plain "LD_PRELOAD" on Solaris. Always use LD_PRELOAD_32 or LD_PRELOAD_64. If a 32-bit binary hits a 64-bit shared object in LD_PRELOAD, or the other way around, it won't run.

1 Like

Hi Achenle,

Thanks for your email.

I have tried this and it is not changing the permissions now.. but that would be expected if chmod is "interfered" like that?
What vim does is take a copy, work on tha tcopy, then copy that file back and invoke chmod to preserve permissions, which in turns overwrites the ACLs.

I have attaced the dtrace output too.

What's odd is, if I run it with "nobackup", it creates the swap file as well, but this time it preserves the acls...

1715/1:          0.0733 chmod(".1.swp", 0644)                           = 0
1715/1:          2.7204 rename("1", "1~")                               = 0
1715/1:          2.7227 chmod("1", 0100644)                             = 0
1715/1:          2.7284 rename("/root/.viminfo.tmp", "/root/.viminfo")  = 0

Cheers.

I'm not sure I understand your explanation of what you've done. Did you try with the LD_PRELOAD set, and found that the ACLs were preserved?

Do you have a complete truss output with "nobackup" set?

1 Like

Yes, I run a test with LD_PRELOAD set, so chmod command would not work (and it wasn't working! I tried), that preserved the ACLS when runing vim with backup mode on.

I have attached the dtrace for the run with vim + set nobackup

# ls -V 1
-rw-r--r--+  1 root     root           9 Mar 21 13:03 1
                user:lp:rwx-----------:fd-----:allow
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow
# cat ~/.vimrc
set nobackup
# truss -f -a -vall -l -d -o truss.out vim 1
# ls -V 1
-rw-r--r--+  1 root     root           9 Mar 21 13:03 1
                user:lp:rwx-----------:fd-----:allow
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

The bug appears to be at line 4763 of fileio.c in the vim source code from Vim source archives : vim online :

#ifdef UNIX
    if (made_writable)
        perm &= ~0200;        /* reset 'w' bit for security reasons */
#endif
    if (perm >= 0)        /* set perm. of new file same as old file */
        (void)mch_setperm(wfname, perm);
#ifdef HAVE_ACL
    /* Probably need to set the ACL before changing the user (can't set the
     * ACL on a file the user doesn't own). */
    if (!backup_copy)
        mch_set_acl(wfname, acl);
#endif

The permissions are set on the file, and then ACLs are set, but only if there isn't a backup copy.

Pretty much exactly as you've found out.

The logic there escapes me.

1 Like

Thanks for you help with this.

When I have time I will folllow up with the vim guys, I think however that ZFS ACLs are not supported anyway in that vim version (I found some vague comments about it on google).

Thanks again for taking the time to look into this!

Cheers.