Attempting to decode a mosaic symbol creates a looping error:
$ echo foo | dmtxwrite -o fubar.png -M; dmtxread -M fubar.png
Rejected due to ECC validation
Rejected due to ECC validation
Rejected due to ECC validation
No debug flag is available, so I'm including an strace:
$ echo foo | dmtxwrite -o fubar.png -M; strace dmtxread -M fubar.png
execve("/usr/bin/dmtxread", ["dmtxread", "-M", "fubar.png"], [/* 40 vars */]) = 0
brk(0) = 0x804c000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ef5000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=130292, ...}) = 0
mmap2(NULL, 130292, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ed5000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libpng12.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200=\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=139660, ...}) = 0
mmap2(NULL, 142572, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7eb2000
mmap2(0xb7ed4000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x21) = 0xb7ed4000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libtiff.so.4", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260L\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=343712, ...}) = 0
mmap2(NULL, 343680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e5e000
mmap2(0xb7eb0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x52) = 0xb7eb0000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libjpeg.so.62", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P&\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=125280, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e5d000
mmap2(NULL, 124020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e3e000
mmap2(0xb7e5c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e) = 0xb7e5c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\30"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=81012, ...}) = 0
mmap2(NULL, 83740, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e29000
mmap2(0xb7e3d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb7e3d000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@4\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149328, ...}) = 0
mmap2(NULL, 147584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e04000
mmap2(0xb7e27000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xb7e27000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1356196, ...}) = 0
mmap2(NULL, 1361520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cb7000
mmap2(0xb7dfe000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x147) = 0xb7dfe000
mmap2(0xb7e01000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7e01000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libdmtx.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\33\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=56432, ...}) = 0
mmap2(NULL, 59400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ca8000
mmap2(0xb7cb6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd) = 0xb7cb6000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ca7000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ca6000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7ca7b20, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7dfe000, 4096, PROT_READ) = 0
munmap(0xb7ed5000, 130292) = 0
brk(0) = 0x804c000
brk(0x806e000) = 0x806e000
open("fubar.png", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=936, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ef4000
read(3, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0\264\0\0\0\264\10\2\0"..., 4096) = 936
brk(0x8093000) = 0x8093000
brk(0x808b000) = 0x808b000
close(3) = 0
munmap(0xb7ef4000, 4096) = 0
write(2, "Rejected due to ECC validation\n", 31Rejected due to ECC validation
) = 31
write(2, "Rejected due to ECC validation\n", 31Rejected due to ECC validation
) = 31
write(2, "Rejected due to ECC validation\n", 31Rejected due to ECC validation
) = 31
Logged In: YES
user_id=1384836
Originator: NO
Thanks for letting me know about this. I just looked in Subversion and the code for decoding Data Mosaic seems to be missing entirely.
I had to stop using CVS in 2007 while distribution was halted and this is the type of thing that happens as a result. I'll take a look on my local drive later and see if I can find where this particular feature went.
Logged In: YES
user_id=1163714
Originator: NO
Mosaic decoding produces zero output file for me at all sizes.
Logged In: YES
user_id=1163714
Originator: NO
Sorry, last comment was in svn revision 182.
Logged In: YES
user_id=1384836
Originator: NO
Well it isn't pretty under the hood, but decoding of Data Mosaic should work again. This is still an experimental feature so the implementation will continue to be a hack until I figure out the cleanest approach.
Can one of you (pcitizen or lotyrin) try out Subversion revision 185 or later, and the close this bug if it works on your system?
Thanks!
Mike