W0203 14:02:57.730005 1 state.go:92] Save failed: encoding error: gofer.dentry("root/.xpaint/tmp/XPaint-8601Vy").beforeSave: deleted and invalidated dentries can't be restored: goroutine 3913 [running]: gvisor.dev/gvisor/pkg/state.safely.func1() pkg/state/state.go:309 +0x179 panic({0x1122fa0?, 0xc001598030?}) GOROOT/src/runtime/panic.go:770 +0x132 gvisor.dev/gvisor/pkg/sentry/fsimpl/gofer.(*dentry).beforeSave(0xc0028bc008) pkg/sentry/fsimpl/gofer/save_restore.go:133 +0x7c gvisor.dev/gvisor/pkg/sentry/fsimpl/gofer.(*dentry).StateSave(0xc0028bc008, {{0xc002d35188?, 0xc000f162b8?}}) bazel-out/k8-opt/bin/pkg/sentry/fsimpl/gofer/gofer_state_autogen.go:466 +0x4a gvisor.dev/gvisor/pkg/state.(*encodeState).encodeStruct(0xc002d35188, {0x13687c0, 0xc0028bc008, 0x199}, 0xc001866aa0) pkg/state/encode.go:536 +0x5a9 gvisor.dev/gvisor/pkg/state.(*encodeState).encodeObject(0xc002d35188, {0x13687c0?, 0xc0028bc008?, 0x30?}, 0x0, 0xc001866aa0) pkg/state/encode.go:733 +0x5e5 gvisor.dev/gvisor/pkg/state.(*encodeState).Save.func2() pkg/state/encode.go:770 +0x8e gvisor.dev/gvisor/pkg/state.safely(0xc002d35188?) pkg/state/state.go:322 +0x57 gvisor.dev/gvisor/pkg/state.(*encodeState).Save(0xc002d35188, {0x136c620?, 0xc00020d008?, 0x0?}) pkg/state/encode.go:763 +0x21e gvisor.dev/gvisor/pkg/state.Save.func1() pkg/state/state.go:104 +0x98 gvisor.dev/gvisor/pkg/state.safely(0x5f?) pkg/state/state.go:322 +0x57 gvisor.dev/gvisor/pkg/state.Save({0x7bebd7558258, 0xc0001f82a0}, {0x7bebd75eb348, 0xc003d12000}, {0x136d460, 0xc00020d008}) pkg/state/state.go:103 +0x1d3 gvisor.dev/gvisor/pkg/sentry/kernel.(*Kernel).SaveTo(0xc00020d008, {0x15ebff8, 0xc0001f82a0}, {0x7bebd75eb348, 0xc003d12000}, {0x0, 0x0}, 0x0, {0x30?}) pkg/sentry/kernel/kernel.go:703 +0x9d9 gvisor.dev/gvisor/pkg/sentry/state.SaveOpts.Save({{0x15c9ac0, 0xc00176c9f8}, 0x0, 0x0, {0x0, 0x0, 0x0}, 0xc00142f1d0, {0x0}, 0xc0023ec180, ...}, ...) pkg/sentry/state/state.go:112 +0x36d gvisor.dev/gvisor/pkg/sentry/control.(*State).Save(0xc0038e22b0, 0xc002fba460, 0x1387ac1?) pkg/sentry/control/state.go:113 +0x425 gvisor.dev/gvisor/runsc/boot.(*Loader).save(0xc0001f0f08, 0xc002fba460) runsc/boot/restore.go:364 +0x199 gvisor.dev/gvisor/runsc/boot.(*containerManager).Checkpoint(0xc00013d3e0, 0xc002fba460, 0x0?) runsc/boot/controller.go:446 +0x58 reflect.Value.call({0xc0001b5020?, 0xc0001a6308?, 0xc003083c70?}, {0x137b5d7, 0x4}, {0xc003083eb0, 0x3, 0xc003083ca0?}) GOROOT/src/reflect/value.go:596 +0xce5 reflect.Value.Call({0xc0001b5020?, 0xc0001a6308?, 0xa0?}, {0xc003083eb0?, 0xc002fba460?, 0x16?}) GOROOT/src/reflect/value.go:380 +0xb9 gvisor.dev/gvisor/pkg/urpc.(*Server).handleOne(0xc0001482d0, 0xc002592c90) pkg/urpc/urpc.go:338 +0x63b gvisor.dev/gvisor/pkg/urpc.(*Server).handleRegistered(...) pkg/urpc/urpc.go:433 gvisor.dev/gvisor/pkg/urpc.(*Server).StartHandling.func1() pkg/urpc/urpc.go:453 +0x76 created by gvisor.dev/gvisor/pkg/urpc.(*Server).StartHandling in goroutine 198 pkg/urpc/urpc.go:451 +0x6b for object gofer.dentry{vfsd:vfs.Dentry{mu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, dead:true, evictable:false, mounts:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x0}, impl:(*gofer.dentry)(0xc0028bc008)}, refs:atomicbitops.Int64{_:sync.NoCopy{}, value:1}, fs:(*gofer.filesystem)(0xc0001f2280), parent:atomic.Pointer[gvisor.dev/gvisor/pkg/sentry/fsimpl/gofer.dentry]{_:[0]*gofer.dentry{}, _:atomic.noCopy{}, v:(unsafe.Pointer)(0xc002a5f608)}, name:"XPaint-8601Vy", inoKey:gofer.inoKey{ino:0x1ba7a09, devMinor:0x1b6, devMajor:0x0}, deleted:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x1}, cachingMu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, cached:false, cacheEntry:gofer.dentryListElem{d:(*gofer.dentry)(0xc0028bc008), dentryEntry:gofer.dentryEntry{next:(*gofer.dentryListElem)(nil), prev:(*gofer.dentryListElem)(nil)}}, syncableListEntry:gofer.dentryListElem{d:(*gofer.dentry)(0xc0028bc008), dentryEntry:gofer.dentryEntry{next:(*gofer.dentryListElem)(0xc0028bdb88), prev:(*gofer.dentryListElem)(0xc002a5f688)}}, opMu:sync.RWMutex{m:sync.CrossGoroutineRWMutex{w:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}, writerSem:0x0, readerSem:0x0, readerCount:0, readerWait:0}}, childrenMu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, children:map[string]*gofer.dentry(nil), negativeChildrenCache:gofer.stringFixedCache{namesList:gofer.stringList{head:(*gofer.stringListElem)(nil), tail:(*gofer.stringListElem)(nil)}, size:0x0}, negativeChildren:0, syntheticChildren:0, dirents:[]vfs.Dirent(nil), childrenSet:map[string]struct {}(nil), metadataMu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, ino:0x1494, mode:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x8180}, uid:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x0}, gid:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x0}, blockSize:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x1000}, atime:atomicbitops.Int64{_:sync.NoCopy{}, value:1738590996335003821}, mtime:atomicbitops.Int64{_:sync.NoCopy{}, value:1738590996321002402}, ctime:atomicbitops.Int64{_:sync.NoCopy{}, value:1738590996321002402}, btime:atomicbitops.Int64{_:sync.NoCopy{}, value:0}, size:atomicbitops.Uint64{_:sync.NoCopy{}, value:0x13d2}, atimeDirty:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x0}, mtimeDirty:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x0}, nlink:atomicbitops.Uint32{_:sync.NoCopy{}, value:0x1}, mapsMu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, mappings:memmap.MappingSet{root:memmap.Mappingnode{nrSegments:0, parent:(*memmap.Mappingnode)(nil), parentIndex:0, hasChildren:false, maxGap:memmap.MappingdynamicGap{}, keys:[5]memmap.MappableRange{memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}}, values:[5]memmap.MappingsOfRange{memmap.MappingsOfRange(nil), memmap.MappingsOfRange(nil), memmap.MappingsOfRange(nil), memmap.MappingsOfRange(nil), memmap.MappingsOfRange(nil)}, children:[6]*memmap.Mappingnode{(*memmap.Mappingnode)(nil), (*memmap.Mappingnode)(nil), (*memmap.Mappingnode)(nil), (*memmap.Mappingnode)(nil), (*memmap.Mappingnode)(nil), (*memmap.Mappingnode)(nil)}}}, handleMu:sync.RWMutex{m:sync.CrossGoroutineRWMutex{w:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}, writerSem:0x0, readerSem:0x0, readerCount:0, readerWait:0}}, readFD:atomicbitops.Int32{_:sync.NoCopy{}, value:857}, writeFD:atomicbitops.Int32{_:sync.NoCopy{}, value:857}, mmapFD:atomicbitops.Int32{_:sync.NoCopy{}, value:857}, dataMu:sync.RWMutex{m:sync.CrossGoroutineRWMutex{w:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}, writerSem:0x0, readerSem:0x0, readerCount:0, readerWait:0}}, cache:fsutil.FileRangeSet{root:fsutil.FileRangenode{nrSegments:0, parent:(*fsutil.FileRangenode)(nil), parentIndex:0, hasChildren:false, maxGap:fsutil.FileRangedynamicGap{}, keys:[5]memmap.MappableRange{memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}}, values:[5]uint64{0x0, 0x0, 0x0, 0x0, 0x0}, children:[6]*fsutil.FileRangenode{(*fsutil.FileRangenode)(nil), (*fsutil.FileRangenode)(nil), (*fsutil.FileRangenode)(nil), (*fsutil.FileRangenode)(nil), (*fsutil.FileRangenode)(nil), (*fsutil.FileRangenode)(nil)}}}, dirty:fsutil.DirtySet{root:fsutil.Dirtynode{nrSegments:0, parent:(*fsutil.Dirtynode)(nil), parentIndex:0, hasChildren:false, maxGap:fsutil.DirtydynamicGap{}, keys:[5]memmap.MappableRange{memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}, memmap.MappableRange{Start:0x0, End:0x0}}, values:[5]fsutil.DirtyInfo{fsutil.DirtyInfo{Keep:false}, fsutil.DirtyInfo{Keep:false}, fsutil.DirtyInfo{Keep:false}, fsutil.DirtyInfo{Keep:false}, fsutil.DirtyInfo{Keep:false}}, children:[6]*fsutil.Dirtynode{(*fsutil.Dirtynode)(nil), (*fsutil.Dirtynode)(nil), (*fsutil.Dirtynode)(nil), (*fsutil.Dirtynode)(nil), (*fsutil.Dirtynode)(nil), (*fsutil.Dirtynode)(nil)}}}, pf:gofer.dentryPlatformFile{NoBufferedIOFallback:memmap.NoBufferedIOFallback{}, dentry:(*gofer.dentry)(0xc0028bc008), fdRefs:fsutil.FrameRefSet{root:fsutil.FrameRefnode{nrSegments:0, parent:(*fsutil.FrameRefnode)(nil), parentIndex:0, hasChildren:false, maxGap:fsutil.FrameRefdynamicGap{}, keys:[5]memmap.FileRange{memmap.FileRange{Start:0x0, End:0x0}, memmap.FileRange{Start:0x0, End:0x0}, memmap.FileRange{Start:0x0, End:0x0}, memmap.FileRange{Start:0x0, End:0x0}, memmap.FileRange{Start:0x0, End:0x0}}, values:[5]fsutil.FrameRefSegInfo{fsutil.FrameRefSegInfo{refs:0x0, memCgID:0x0}, fsutil.FrameRefSegInfo{refs:0x0, memCgID:0x0}, fsutil.FrameRefSegInfo{refs:0x0, memCgID:0x0}, fsutil.FrameRefSegInfo{refs:0x0, memCgID:0x0}, fsutil.FrameRefSegInfo{refs:0x0, memCgID:0x0}}, children:[6]*fsutil.FrameRefnode{(*fsutil.FrameRefnode)(nil), (*fsutil.FrameRefnode)(nil), (*fsutil.FrameRefnode)(nil), (*fsutil.FrameRefnode)(nil), (*fsutil.FrameRefnode)(nil), (*fsutil.FrameRefnode)(nil)}}}, hostFileMapper:fsutil.HostFileMapper{refsMu:fsutil.refsMutex{mu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}}, refs:map[uint64]int32(nil), mapsMu:fsutil.mapsMutex{mu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}}, mappings:map[uint64]fsutil.mapping(nil)}, hostFileMapperInitOnce:sync.Once{done:atomic.Uint32{_:atomic.noCopy{}, v:0x0}, m:sync.Mutex{state:0, sema:0x0}}}, haveTarget:false, target:"", endpoint:transport.BoundEndpoint(nil), pipe:(*pipe.VFSPipe)(nil), locks:vfs.FileLocks{bsd:lock.Locks{mu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, locks:lock.LockSet{root:lock.Locknode{nrSegments:0, parent:(*lock.Locknode)(nil), parentIndex:0, hasChildren:false, maxGap:lock.LockdynamicGap{}, keys:[5]lock.LockRange{lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}}, values:[5]lock.Lock{lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}}, children:[6]*lock.Locknode{(*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil)}}}, blockedQueue:waiter.Queue{list:waiter.waiterList{head:(*waiter.Entry)(nil), tail:(*waiter.Entry)(nil)}, mu:sync.RWMutex{m:sync.CrossGoroutineRWMutex{w:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}, writerSem:0x0, readerSem:0x0, readerCount:0, readerWait:0}}}}, posix:lock.Locks{mu:sync.Mutex{m:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}}, locks:lock.LockSet{root:lock.Locknode{nrSegments:0, parent:(*lock.Locknode)(nil), parentIndex:0, hasChildren:false, maxGap:lock.LockdynamicGap{}, keys:[5]lock.LockRange{lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}, lock.LockRange{Start:0x0, End:0x0}}, values:[5]lock.Lock{lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}, lock.Lock{Readers:map[lock.UniqueID]lock.OwnerInfo(nil), Writer:lock.UniqueID(nil), WriterInfo:lock.OwnerInfo{PID:0, OFD:false}}}, children:[6]*lock.Locknode{(*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil), (*lock.Locknode)(nil)}}}, blockedQueue:waiter.Queue{list:waiter.waiterList{head:(*waiter.Entry)(nil), tail:(*waiter.Entry)(nil)}, mu:sync.RWMutex{m:sync.CrossGoroutineRWMutex{w:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}, writerSem:0x0, readerSem:0x0, readerCount:0, readerWait:0}}}}}, watches:vfs.Watches{mu:sync.RWMutex{m:sync.CrossGoroutineRWMutex{w:sync.CrossGoroutineMutex{m:sync.Mutex{state:0, sema:0x0}}, writerSem:0x0, readerSem:0x0, readerCount:0, readerWait:0}}, ws:map[uint64]*vfs.Watch(nil)}, forMountpoint:false, impl:(*gofer.directfsDentry)(0xc0028bc008)}: goroutine 3913 [running]: gvisor.dev/gvisor/pkg/state.safely.func1() pkg/state/state.go:309 +0x179 panic({0x11a9240?, 0xc000efb0c0?}) GOROOT/src/runtime/panic.go:770 +0x132 gvisor.dev/gvisor/pkg/state.Failf(...) pkg/state/state.go:269 gvisor.dev/gvisor/pkg/state.(*encodeState).Save(0xc002d35188, {0x136c620?, 0xc00020d008?, 0x0?}) pkg/state/encode.go:774 +0x46e gvisor.dev/gvisor/pkg/state.Save.func1() pkg/state/state.go:104 +0x98 gvisor.dev/gvisor/pkg/state.safely(0x5f?) pkg/state/state.go:322 +0x57 gvisor.dev/gvisor/pkg/state.Save({0x7bebd7558258, 0xc0001f82a0}, {0x7bebd75eb348, 0xc003d12000}, {0x136d460, 0xc00020d008}) pkg/state/state.go:103 +0x1d3 gvisor.dev/gvisor/pkg/sentry/kernel.(*Kernel).SaveTo(0xc00020d008, {0x15ebff8, 0xc0001f82a0}, {0x7bebd75eb348, 0xc003d12000}, {0x0, 0x0}, 0x0, {0x30?}) pkg/sentry/kernel/kernel.go:703 +0x9d9 gvisor.dev/gvisor/pkg/sentry/state.SaveOpts.Save({{0x15c9ac0, 0xc00176c9f8}, 0x0, 0x0, {0x0, 0x0, 0x0}, 0xc00142f1d0, {0x0}, 0xc0023ec180, ...}, ...) pkg/sentry/state/state.go:112 +0x36d gvisor.dev/gvisor/pkg/sentry/control.(*State).Save(0xc0038e22b0, 0xc002fba460, 0x1387ac1?) pkg/sentry/control/state.go:113 +0x425 gvisor.dev/gvisor/runsc/boot.(*Loader).save(0xc0001f0f08, 0xc002fba460) runsc/boot/restore.go:364 +0x199 gvisor.dev/gvisor/runsc/boot.(*containerManager).Checkpoint(0xc00013d3e0, 0xc002fba460, 0x0?) runsc/boot/controller.go:446 +0x58 reflect.Value.call({0xc0001b5020?, 0xc0001a6308?, 0xc003083c70?}, {0x137b5d7, 0x4}, {0xc003083eb0, 0x3, 0xc003083ca0?}) GOROOT/src/reflect/value.go:596 +0xce5 reflect.Value.Call({0xc0001b5020?, 0xc0001a6308?, 0xa0?}, {0xc003083eb0?, 0xc002fba460?, 0x16?}) GOROOT/src/reflect/value.go:380 +0xb9 gvisor.dev/gvisor/pkg/urpc.(*Server).handleOne(0xc0001482d0, 0xc002592c90) pkg/urpc/urpc.go:338 +0x63b gvisor.dev/gvisor/pkg/urpc.(*Server).handleRegistered(...) pkg/urpc/urpc.go:433 gvisor.dev/gvisor/pkg/urpc.(*Server).StartHandling.func1() pkg/urpc/urpc.go:453 +0x76 created by gvisor.dev/gvisor/pkg/urpc.(*Server).StartHandling in goroutine 198 pkg/urpc/urpc.go:451 +0x6b