History Of Ticket 0990f53b1a
  1. Ticket change [402055df96] (rid 853) by rkeene on 2010-10-13 14:59:38:

    1. Change comment to:

      Reported by JDC: http://groups.google.com/group/starkit/browse_frm/thread/5827418f4a2b80e7

      PNG files read from an mk4vfs can fail to be read. Likely an issue in vfs::zstreamed in tclvfs.

      It happens on non-KitCreator Tclkits too.

    2. Change foundin to "0.5.2"
    3. Change private_contact to "346ea4e97beda2eb92a9ebba810f853dd2035948"
    4. Change severity to "Severe"
    5. Change status to "Open"
    6. Change title to:

      PNG files in Metakit4 VFSes fail to be read correctly

    7. Change type to "Code Defect"
  2. Add attachment "cross.png" [46090d3a50] (rid 855) by rkeene on 2010-10-13 15:09:04.

  3. Ticket change [625c3d95ab] (rid 856) by rkeene on 2010-10-13 15:29:31:

    1. Appended to comment:

      rkeene added on 2010-10-13 15:29:31:

      1. Create mk4vfs
        1. $ mkdir x.vfs
        2. $ cp cross.png x.vfs/
        3. $ ./tclkit-8.5.9-linux-i686 sdx.kit wrap x
        4. 1 updates applied
      2. Test reading "cross.png" from the mk4vfs
        1. % vfs::mk4::Mount x x
        2. mk4vfs1
        3. % cd x
        4. % glob *
        5. cross.png
        6. % set fd [open cross.png]
        7. mk7
        8. % fconfigure $fd -translation binary
        9. % set data [read $fd]; puts [string length $data]
        10. 655
        11. % binary scan $data H* data_hex
        12. 1
        13. % puts $data_hex
        14. 89504e470d0a1a0a0000000d49484452
        15. 000000100000001008060000001ff3ff
        16. 610000000467414d410000afc837058a
        17. e90000001974455874536f6674776172
        18. 650041646f626520496d616765526561
        19. 647971c9653c000002214944415438cb
        20. 9593eb4e135114858989c989cfa05689
        21. 86c89180c41b425b0628ad0d0826d0fb
        22. 855ea480b4a5eda44da136ea0f4d7c12
        23. 9f0b44c5deb0d299763ad3e5ae984a2d
        24. 25e1c74ece64cefaf6acb5f70c0018b8
        25. 4cd5d742d7ce3e775f10333a2ade57ec
        26. 0f72d9ed8dd76c4e432fa02dceeca295
        27. ce428b277b20755f80d703613436b6f0
        28. ebe5cae7eae2d2bd7f80bf62e4dfa145
        29. a525443437b73b10d9bbc6a93b9ad138
        30. 90cba37d3e365be3e519d39553402acd
        31. 5a09516bedbe013e7e8296cdb5016804
        32. 425cf6f8397587b21d03e8bdec0fe078
        33. feb95a16e6ae7659d06209a6be8ea99a
        34. 9801de7f809a4aa31e0c83ba43d98a02
        35. d9bd3fe78ac942e259766e88cdc8266b
        36. 84d6d5667487ecbc05f6f224cc01992c
        37. 648f0f9539b35a9e9e61fda7701a1693
        38. 5c5e0d59b2e3f6010e3720a651999dd7
        39. 4a4681fd7fbf0720393ded5101340dd8
        40. 9cc08a1dd849926f0b0a1353fc4280e4
        41. 7073c9e581128e004991842920467628
        42. 4079d58eb2de88ef63e3fc5c40cdeee2
        43. 92d30d25b40ed01825870b14965a9c32
        44. 68278bcb406403b517cb283c7c8cc3a1
        45. 61de05a0cde2d41d4af015754d40a24f
        46. a7b0d4e2a481159e4cb0a3f1476ad564
        47. 0682219c58ac381a19c5c1ad41de01d0
        48. 6609359b034a200469d5010a4b2d3ed3
        49. 7702fb3632c6be0edf577f1a0548d605
        50. fc187d80fd1b3aa1cb026d96505d5842
        51. c930ad51583d691fde1d625f06efa867
        52. c53d2196f446a1f07492f5fb990e74b7
        53. d9fef59bc28563bc6cfd0672bba4c7db
        54. edbe140000000049454e44ae426082
    2. Change priority to "Immediate"
    3. Change resolution to "Open"
    4. Change subsystem to "Tcl"
  4. Ticket change [3f6c6ead56] (rid 857) by rkeene on 2010-10-13 15:42:47:

    1. Appended to comment:

      rkeene added on 2010-10-13 15:42:47:
      It works in the trivial case posted previously, but fails with the following kit: http://code.google.com/p/wubwikit/downloads/detail?name=wub-20100922.kit

      In the kit:

      % set fd [open cross.png]
      mk7
      % fconfigure $fd -encoding binary
      % set data [read $fd]; puts [string length $data]
      654
      % file stat cross.png x
      % parray x
      x(atime)   = 1285147347
      x(blksize) = 135312827
      x(blocks)  = 583863729869319636
      x(ctime)   = 1285147347
      x(dev)     = -143965300
      x(gid)     = 0
      x(ino)     = 0
      x(mode)    = 33279
      x(mtime)   = 1285147347
      x(nlink)   = 1
      x(size)    = 655
      x(type)    = file
      x(uid)     = 0
      
  5. Ticket change [2fca045077] (rid 858) by rkeene on 2010-10-13 15:45:53:

    1. Appended to comment:

      rkeene added on 2010-10-13 15:45:53:
      Still not sure where this is failing.

      % mk::loop x db.dirs!90.files { puts "$x, [mk::get $x name]" }
      db.dirs!90.files!0, cross.png
      db.dirs!90.files!1, tick.png
      db.dirs!90.files!2, tclp.gif
      % mk::view info db.dirs!90.files  
      name size:I date:I contents:B
      % mk::get db.dirs!90.files!0 size
      655
      % string length [mk::get db.dirs!90.files!0 contents]
      655
      % mk::get db.dirs!90.files!0 -size contents
      655
      %
      
  6. Ticket change [ed7db63c32] (rid 859) by rkeene on 2010-10-13 15:52:42:

    1. Appended to comment:

      rkeene added on 2010-10-13 15:52:42:
      Oh, wait I did "-encoding binary" in my second test where it should have been "-translation binary".

      Using "-translation binary" causes it to be read correctly.

      % set fd [open cross.png r]
      mk7
      % fconfigure $fd -translation binary         
      % set data [read $fd]; puts [string length $data]
      655
      % binary scan $data H* data_hex
      1
      
  7. Ticket change [e49f89ab8d] (rid 863) by rkeene on 2010-10-16 21:12:41:

    1. Appended to comment:

      rkeene added on 2010-10-16 21:12:41:
      The issue only occurs when using [fcopy] and mk4vfs channels without direct mode.

      Simple test:

      vfs::mk4::Mount test.mk /TEST
      set fd [open /TEST/cross.png]
      fconfigure $fd -translation binary
      set out [open /dev/null w]
      set ::fcopy_complete 0
      proc fcopy_complete {args} { set ::fcopy_complete 1 }
      fcopy $fd $out -command fcopy_complete
      after 3000
      update
      puts "FCOPY: $fcopy_complete"
      
    2. Change subsystem to "Mk4tcl"
  8. Ticket change [8761fe6055] (rid 864) by rkeene on 2010-10-16 21:13:32:

    1. Change comment to:

      Reported by JDC: http://groups.google.com/group/starkit/browse_frm/thread/5827418f4a2b80e7

      PNG files read from an mk4vfs can fail to be read. Likely an issue in vfs::zstreamed in tclvfs.

      It happens on non-KitCreator Tclkits too.


      rkeene added on 2010-10-13 15:29:31:

      1. Create mk4vfs
        1. $ mkdir x.vfs
        2. $ cp cross.png x.vfs/
        3. $ ./tclkit-8.5.9-linux-i686 sdx.kit wrap x
        4. 1 updates applied
      2. Test reading "cross.png" from the mk4vfs
        1. % vfs::mk4::Mount x x
        2. mk4vfs1
        3. % cd x
        4. % glob *
        5. cross.png
        6. % set fd [open cross.png]
        7. mk7
        8. % fconfigure $fd -translation binary
        9. % set data [read $fd]; puts [string length $data]
        10. 655
        11. % binary scan $data H* data_hex
        12. 1
        13. % puts $data_hex
        14. 89504e470d0a1a0a0000000d49484452
        15. 000000100000001008060000001ff3ff
        16. 610000000467414d410000afc837058a
        17. e90000001974455874536f6674776172
        18. 650041646f626520496d616765526561
        19. 647971c9653c000002214944415438cb
        20. 9593eb4e135114858989c989cfa05689
        21. 86c89180c41b425b0628ad0d0826d0fb
        22. 855ea480b4a5eda44da136ea0f4d7c12
        23. 9f0b44c5deb0d299763ad3e5ae984a2d
        24. 25e1c74ece64cefaf6acb5f70c0018b8
        25. 4cd5d742d7ce3e775f10333a2ade57ec
        26. 0f72d9ed8dd76c4e432fa02dceeca295
        27. ce428b277b20755f80d703613436b6f0
        28. ebe5cae7eae2d2bd7f80bf62e4dfa145
        29. a525443437b73b10d9bbc6a93b9ad138
        30. 90cba37d3e365be3e519d39553402acd
        31. 5a09516bedbe013e7e8296cdb5016804
        32. 425cf6f8397587b21d03e8bdec0fe078
        33. feb95a16e6ae7659d06209a6be8ea99a
        34. 9801de7f809a4aa31e0c83ba43d98a02
        35. d9bd3fe78ac942e259766e88cdc8266b
        36. 84d6d5667487ecbc05f6f224cc01992c
        37. 648f0f9539b35a9e9e61fda7701a1693
        38. 5c5e0d59b2e3f6010e3720a651999dd7
        39. 4a4681fd7fbf0720393ded5101340dd8
        40. 9cc08a1dd849926f0b0a1353fc4280e4
        41. 7073c9e581128e004991842920467628
        42. 4079d58eb2de88ef63e3fc5c40cdeee2
        43. 92d30d25b40ed01825870b14965a9c32
        44. 68278bcb406403b517cb283c7c8cc3a1
        45. 61de05a0cde2d41d4af015754d40a24f
        46. a7b0d4e2a481159e4cb0a3f1476ad564
        47. 0682219c58ac381a19c5c1ad41de01d0
        48. 6609359b034a200469d5010a4b2d3ed3
        49. 7702fb3632c6be0edf577f1a0548d605
        50. fc187d80fd1b3aa1cb026d96505d5842
        51. c930ad51583d691fde1d625f06efa867
        52. c53d2196f446a1f07492f5fb990e74b7
        53. d9fef59bc28563bc6cfd0672bba4c7db
        54. edbe140000000049454e44ae426082

      rkeene added on 2010-10-13 15:42:47:
      It works in the trivial case posted previously, but fails with the following kit: http://code.google.com/p/wubwikit/downloads/detail?name=wub-20100922.kit

      In the kit:

      % set fd [open cross.png]
      mk7
      % fconfigure $fd -encoding binary
      % set data [read $fd]; puts [string length $data]
      654
      % file stat cross.png x
      % parray x
      x(atime)   = 1285147347
      x(blksize) = 135312827
      x(blocks)  = 583863729869319636
      x(ctime)   = 1285147347
      x(dev)     = -143965300
      x(gid)     = 0
      x(ino)     = 0
      x(mode)    = 33279
      x(mtime)   = 1285147347
      x(nlink)   = 1
      x(size)    = 655
      x(type)    = file
      x(uid)     = 0
      

      rkeene added on 2010-10-13 15:45:53:
      Still not sure where this is failing.

      % mk::loop x db.dirs!90.files { puts "$x, [mk::get $x name]" }
      db.dirs!90.files!0, cross.png
      db.dirs!90.files!1, tick.png
      db.dirs!90.files!2, tclp.gif
      % mk::view info db.dirs!90.files  
      name size:I date:I contents:B
      % mk::get db.dirs!90.files!0 size
      655
      % string length [mk::get db.dirs!90.files!0 contents]
      655
      % mk::get db.dirs!90.files!0 -size contents
      655
      %
      

      rkeene added on 2010-10-13 15:52:42:
      Oh, wait I did "-encoding binary" in my second test where it should have been "-translation binary".

      Using "-translation binary" causes it to be read correctly.

      % set fd [open cross.png r]
      mk7
      % fconfigure $fd -translation binary         
      % set data [read $fd]; puts [string length $data]
      655
      % binary scan $data H* data_hex
      1
      

      rkeene added on 2010-10-16 21:12:41:
      The issue only occurs when using [fcopy] and mk4vfs channels without direct mode.

      Simple test:

      vfs::mk4::Mount test.mk /TEST
      set fd [open /TEST/cross.png]
      fconfigure $fd -translation binary
      set out [open /dev/null w]
      set ::fcopy_complete 0
      proc fcopy_complete {args} { set ::fcopy_complete 1 }
      fcopy $fd $out -command fcopy_complete
      after 3000
      update
      puts "FCOPY: $fcopy_complete"
      
  9. Ticket change [291f22cf85] (rid 865) by rkeene on 2010-10-16 21:14:10:

    1. Appended to comment:

      rkeene added on 2010-10-16 21:14:10:
      P. Thoyts came up with a patch for this: http://github.com/patthoyts/kitgen/commit/3ee246892b79bb83c8c96a2646124c6da94bbd3e

  10. Ticket change [02bfa82328] (rid 866) by rkeene on 2010-10-16 21:15:12:

    1. Appended to comment:

      rkeene added on 2010-10-16 21:15:12:
      Patch from P. Thoyts fixes the problem, but the test case segfaults on exit.

      Backtrace follows:

      (gdb) bt
      #0  0x08075599 in Tcl_GetAssocData ()
      #1  0x0804d67a in mkClose (instanceData=0x8170380, interp=0x0) at ../tcl/mk4tcl.cpp:326
      #2  0x080b86de in TclFinalizeIOSubsystem ()
      #3  0x0809d004 in Tcl_FinalizeThread ()
      #4  0x0809d160 in Tcl_Finalize ()
      #5  0x0809d518 in Tcl_Exit ()
      #6  0x08080274 in Tcl_ExitObjCmd ()
      #7  0x08077903 in TclEvalObjvInternal ()
      #8  0x0807857d in Tcl_EvalEx ()
      #9  0x080bf7d7 in Tcl_FSEvalFile ()
      #10 0x080c2d52 in Tcl_Main ()
      #11 0x0804c2aa in main (argc=135724192, argv=0x2004) at main.c:11
      (gdb) 
      
  11. Ticket change [0cf55f14c8] (rid 867) by rkeene on 2010-10-16 21:17:26:

    1. Change comment to:

      Reported by JDC: http://groups.google.com/group/starkit/browse_frm/thread/5827418f4a2b80e7

      PNG files read from an mk4vfs can fail to be read. Likely an issue in vfs::zstreamed in tclvfs.

      It happens on non-KitCreator Tclkits too.


      rkeene added on 2010-10-13 15:29:31:

      1. Create mk4vfs
        1. $ mkdir x.vfs
        2. $ cp cross.png x.vfs/
        3. $ ./tclkit-8.5.9-linux-i686 sdx.kit wrap x
        4. 1 updates applied
      2. Test reading "cross.png" from the mk4vfs
        1. % vfs::mk4::Mount x x
        2. mk4vfs1
        3. % cd x
        4. % glob *
        5. cross.png
        6. % set fd [open cross.png]
        7. mk7
        8. % fconfigure $fd -translation binary
        9. % set data [read $fd]; puts [string length $data]
        10. 655
        11. % binary scan $data H* data_hex
        12. 1
        13. % puts $data_hex
        14. 89504e470d0a1a0a0000000d49484452
        15. ...
        16. d9fef59bc28563bc6cfd0672bba4c7db
        17. edbe140000000049454e44ae426082

      rkeene added on 2010-10-13 15:42:47:
      It works in the trivial case posted previously, but fails with the following kit: http://code.google.com/p/wubwikit/downloads/detail?name=wub-20100922.kit

      In the kit:

      % set fd [open cross.png]
      mk7
      % fconfigure $fd -encoding binary
      % set data [read $fd]; puts [string length $data]
      654
      % file stat cross.png x
      % parray x
      x(atime)   = 1285147347
      x(blksize) = 135312827
      x(blocks)  = 583863729869319636
      x(ctime)   = 1285147347
      x(dev)     = -143965300
      x(gid)     = 0
      x(ino)     = 0
      x(mode)    = 33279
      x(mtime)   = 1285147347
      x(nlink)   = 1
      x(size)    = 655
      x(type)    = file
      x(uid)     = 0
      

      rkeene added on 2010-10-13 15:45:53:
      Still not sure where this is failing.

      % mk::loop x db.dirs!90.files { puts "$x, [mk::get $x name]" }
      db.dirs!90.files!0, cross.png
      db.dirs!90.files!1, tick.png
      db.dirs!90.files!2, tclp.gif
      % mk::view info db.dirs!90.files  
      name size:I date:I contents:B
      % mk::get db.dirs!90.files!0 size
      655
      % string length [mk::get db.dirs!90.files!0 contents]
      655
      % mk::get db.dirs!90.files!0 -size contents
      655
      %
      

      rkeene added on 2010-10-13 15:52:42:
      Oh, wait I did "-encoding binary" in my second test where it should have been "-translation binary".

      Using "-translation binary" causes it to be read correctly.

      % set fd [open cross.png r]
      mk7
      % fconfigure $fd -translation binary         
      % set data [read $fd]; puts [string length $data]
      655
      % binary scan $data H* data_hex
      1
      

      rkeene added on 2010-10-16 21:12:41:
      The issue only occurs when using [fcopy] and mk4vfs channels without direct mode.

      Simple test:

      vfs::mk4::Mount test.mk /TEST
      set fd [open /TEST/cross.png]
      fconfigure $fd -translation binary
      set out [open /dev/null w]
      set ::fcopy_complete 0
      proc fcopy_complete {args} { set ::fcopy_complete 1 }
      fcopy $fd $out -command fcopy_complete
      after 3000
      update
      puts "FCOPY: $fcopy_complete"
      

      rkeene added on 2010-10-16 21:14:10:
      P. Thoyts came up with a patch for this: http://github.com/patthoyts/kitgen/commit/3ee246892b79bb83c8c96a2646124c6da94bbd3e


      rkeene added on 2010-10-16 21:15:12:
      Patch from P. Thoyts fixes the problem, but the test case segfaults on exit.

      Backtrace follows:

      (gdb) bt
      #0  0x08075599 in Tcl_GetAssocData ()
      #1  0x0804d67a in mkClose (instanceData=0x8170380, interp=0x0) at ../tcl/mk4tcl.cpp:326
      #2  0x080b86de in TclFinalizeIOSubsystem ()
      #3  0x0809d004 in Tcl_FinalizeThread ()
      #4  0x0809d160 in Tcl_Finalize ()
      #5  0x0809d518 in Tcl_Exit ()
      #6  0x08080274 in Tcl_ExitObjCmd ()
      #7  0x08077903 in TclEvalObjvInternal ()
      #8  0x0807857d in Tcl_EvalEx ()
      #9  0x080bf7d7 in Tcl_FSEvalFile ()
      #10 0x080c2d52 in Tcl_Main ()
      #11 0x0804c2aa in main (argc=135724192, argv=0x2004) at main.c:11
      (gdb) 
      
  12. Ticket change [950cd89836] (rid 872) by rkeene on 2010-10-16 21:29:57:

    1. Appended to comment:

      rkeene added on 2010-10-16 21:29:57:
      Fixed in [ae7d9fc61b].

    2. Change resolution to "Fixed"
    3. Change status to "Closed"