Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: dump/restore out of range inode



On Thu, Jun 03, 2021 at 05:14:07PM -0000, Michael van Elst wrote:
> prlw1%cam.ac.uk@localhost (Patrick Welche) writes:
> 
> >  DUMP: Child 29322 returns LOB status 213
> >213=0xd5
> 
> That's octal. Return status 0213 = 139 -> WCOREFLAG(==128) + signal 11.
> 
> >Can this happen if the original filesystem is broken? At a distance
> >it just looks as though restore hasn't read a symbol table before using it
> >and the filesystem seems to have a valid inode?
> 
> Segfaults should never happen.
> 
> maxino has probably never been set since dump crashed and restore got
> an early end-of-file.

# dump -0auf foo.dmp /store/backup
...
  DUMP: pid=3262 Dumping /dev/rdk18 (/store/backup) to foo.dmp
  DUMP: pid=3262 Label: none
Using 512 buffers (33574952 bytes)
  DUMP: pid=3262 mapping (Pass I) [regular files]
  DUMP: pid=3262 mapping (Pass II) [directories]
  DUMP: pid=3262 estimated 3632204910 tape blocks.
  DUMP: pid=3262 Tape: 1; parent process: 3262 child process 3402
  DUMP: pid=3402 Child on Tape 1 has parent 3262, my pid = 3402
  DUMP: pid=3402 Volume 1 started at: Sat Jun  5 10:35:18 2021
slave 0 wrote 10240 werror 22

and here process 3402 gets the SIGSEGV

Program received signal SIGSEGV, Segmentation fault.
flushtape () at /usr/src/sbin/dump/tape.c:333
333                             if (spcl.c_addr[i] != 0)
(gdb) bt
#0  flushtape () at /usr/src/sbin/dump/tape.c:333
#1  0x000000000020763e in writerec (dp=dp@entry=0x7f7ff3a01380 "", 
    isspcl=isspcl@entry=0) at /usr/src/sbin/dump/tape.c:168
#2  0x0000000000208e49 in dumpmap (map=<optimized out>, type=type@entry=6, 
    ino=ino@entry=397083647) at /usr/src/sbin/dump/traverse.c:716
#3  0x000000000020b355 in main (argc=1, argv=0x7f7fffffe7d8)
    at /usr/src/sbin/dump/main.c:646
(gdb) print spcl
No symbol "spcl" in current context.
(gdb) frame 1
#1  0x000000000020763e in writerec (dp=dp@entry=0x7f7ff3a01380 "", 
    isspcl=isspcl@entry=0) at /usr/src/sbin/dump/tape.c:168
168                     flushtape();
(gdb) print spcl
No symbol "spcl" in current context.
(gdb) print isspcl
$2 = 0

How can gdb not see a spcl anywhere?


Cheers,

Patrick


Home | Main Index | Thread Index | Old Index