I'm running on a machine with 128GB memory and I want to use a large FIFO due
to running 6 simutanious burns from the same drive.
Here's the command that doesn't work:
wodim dev=/dev/sr6 fs=4096m speed=16 tsize=2298496s -v large.iso debug=10
NOTE: I added debug=10 to see where it bombs.
Using strace, this is what I see:
35596 write(1, "Blocks total: 2298496 Blocks current: 2298496 Blocks remaining: 0\n", 66) = 66
35596 getuid() = <redacted>
35596 write(2, "bufsize: 65536 buffers: 65536 hdrsize 1572864\n", 46) = 46
35596 write(2, "bufsize: 65536 buffers: 65512 hdrsize 1572288\n", 46) = 46
35596 write(1, "Using 65512 buffers of 64512 bytes.\n", 36) = 36
35596 --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x7f84a10d6000} ---
35596 +++ killed by SIGSEGV +++
I found the line "Using 65512 buffers of 64512 bytes.\n" in
wodim/fifo.c:init_faio around line 467 (This is without applying debian's
patches)
I assume it has to seg somewhere between that and the fork() about 20 lines
down.
If I use fs=1024m or fs=1536m, it works w/o issues.
If I use fs=2048m, I get this:
wodim: No write mode specified.
wodim: Assuming -tao mode.
wodim: Future versions of wodim may have different drive dependent defaults.
TOC Type: 1 = CD-ROM
wodim: Cannot allocate memory. Cannot get mmap for -2147479552 Bytes on /dev/zero.
If I use fs=3072m, I get this:
wodim: No write mode specified.
wodim: Assuming -tao mode.
wodim: Future versions of wodim may have different drive dependent defaults.
TOC Type: 1 = CD-ROM
wodim: Cannot allocate memory. Cannot get mmap for -1073737728 Bytes on /dev/zero.
I'm assuming that there is a 32-bit integer involved in this. I found in
wodim/fifo.c:mkshare that the parameter "size" is type int. Global "bufsize"
is type long. Looking at mmap man page, the size parameter is type size_t.
It's possible I'm wrong on this, it's been a long time since I've programmed
in C.