GNOME Bugzilla – Bug 547524
beagled-helper his 99% CPU on certain .a2w files
Last modified: 2008-09-12 22:37:00 UTC
On certain Alice [http://www.alice.org] .a2w files, beagle-extract-content hits an exception and then hangs, using 99% CPU on one of my cores. I'll attach a sample file, which provides this output for me, and then hangs: sandy@linux:~> beagle-extract-content Desktop/Downloads/Alice/Required/tutorialWorlds/IceSkaterWorld.a2w Filename: file:///home/sandy/Desktop/Downloads/Alice/Required/tutorialWorlds/IceSkaterWorld.a2w Debug: Loaded 63 filters from /usr/lib/beagle/Filters/Filters.dll Debug: Verifying filter_cache at /home/sandy/.beagle/filterver.dat ... cache is dirty ? False Filter: Beagle.Filters.FilterArchive (determined in .18s) MimeType: application/zip Error: Caught exception extracting data from archive file:///home/sandy/Desktop/Downloads/Alice/Required/tutorialWorlds/IceSkaterWorld.a2w ICSharpCode.SharpZipLib.Zip.ZipException: Data descriptor signature not found at ICSharpCode.SharpZipLib.Zip.ZipInputStream.ReadDataDescriptor () [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.BodyRead (System.Byte[] b, Int32 off, Int32 len) [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.Read (System.Byte[] destination, Int32 index, Int32 count) [0x00000] at Beagle.Filters.FilterArchive.StoreStreamInTempFile (System.IO.Stream stream, System.String extension, DateTime mtime) [0x00000] On other .a2w files, I get an exception and then beagle-extract-content exits: sandy@linux:~> beagle-extract-content Desktop/Downloads/Alice/Required/tutorialWorlds/space.a2w Filename: file:///home/sandy/Desktop/Downloads/Alice/Required/tutorialWorlds/space.a2w Debug: Loaded 63 filters from /usr/lib/beagle/Filters/Filters.dll Debug: Verifying filter_cache at /home/sandy/.beagle/filterver.dat ... cache is dirty ? False Filter: Beagle.Filters.FilterArchive (determined in .16s) MimeType: application/zip Error: Caught exception extracting data from archive file:///home/sandy/Desktop/Downloads/Alice/Required/tutorialWorlds/space.a2w ICSharpCode.SharpZipLib.Zip.ZipException: Data descriptor signature not found at ICSharpCode.SharpZipLib.Zip.ZipInputStream.ReadDataDescriptor () [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.BodyRead (System.Byte[] b, Int32 off, Int32 len) [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.Read (System.Byte[] destination, Int32 index, Int32 count) [0x00000] at Beagle.Filters.FilterArchive.StoreStreamInTempFile (System.IO.Stream stream, System.String extension, DateTime mtime) [0x00000] Warn: Unable to extract file from file:///home/sandy/Desktop/Downloads/Alice/Required/tutorialWorlds/space.a2w ICSharpCode.SharpZipLib.SharpZipBaseException: ICSharpCode.SharpZipLib.SharpZipBaseException: broken uncompressed block at ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Decode () [0x00000] at ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Inflate (System.Byte[] buf, Int32 offset, Int32 len) [0x00000] at ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Read (System.Byte[] b, Int32 off, Int32 len) [0x00000] at ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Read (System.Byte[] b, Int32 off, Int32 len) [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.BodyRead (System.Byte[] b, Int32 off, Int32 len) [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.Read (System.Byte[] destination, Int32 index, Int32 count) [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.CloseEntry () [0x00000] at ICSharpCode.SharpZipLib.Zip.ZipInputStream.GetNextEntry () [0x00000] at (wrapper remoting-invoke-with-check) ICSharpCode.SharpZipLib.Zip.ZipInputStream:GetNextEntry () at Beagle.Filters.FilterArchive.GetNextEntryZip () [0x00000] at Beagle.Filters.FilterArchive.DoGetNextEntry () [0x00000] Properties: Timestamp = 2006-06-21 21:19:02 (Utc) beagle:FileType = archive Content: elementCountHint.txt Text extracted in .00s
The files are too large to attach, so you can find them here: Error then hang, using 99% CPU: http://www.armstrong-clan.net/IceSkaterWorld.a2w Error, no hang, exits cleanly: http://www.armstrong-clan.net/space.a2w
This seems to be a SharpZipLib bug. I have a feeling that the bug is fixed in a recent version of SharpZipLib release; unfortunately, the version included with mono is from 2005! I have filed a bug with mono to upgrade the included SharpZipLib https://bugzilla.novell.com/show_bug.cgi?id=426065 If even that does not fix this problem, then a bug should be filed with SharpZipLib upstream. Unfortunately there is nothing that can be done in beagle; till then, I suggest you move these files somewhere else or exclude all .a2w files.