| Summary: | KStars crashes while attempting to import USNO catalog | ||
|---|---|---|---|
| Product: | [Unmaintained] kdelibs | Reporter: | Greg Stachowski <greg.stachowski> | 
| Component: | kdecore | Assignee: | kdelibs bugs <kdelibs-bugs-null> | 
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | alexey.skladnoy, craig, frado65, kennlarsen1, marcocoss, mutlaqja, tokyojo2, walch.martin, yk.007 | 
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Ubuntu | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | 4.5.1 | |
| Sentry Crash Report: | |||
| Attachments: | 
              New crash information added by DrKonqi
               New crash information added by DrKonqi New crash information added by DrKonqi  | 
      ||
| 
 
        
          Description
        
        
          Greg Stachowski
        
        
        
        
          2010-05-10 17:54:55 UTC
        
       
    Created attachment 48067 [details]
New crash information added by DrKonqi
Happened with the same action (downloading USNO catalog). Seems to be almost identical, probably the same problem. I think the backtrace is slightly more detailed.
    Created attachment 48365 [details]
New crash information added by DrKonqi
I've installed Kstars on gnome desktop on Ubuntu 10.04.
    Thank you all for the detailed bug report. I think it's bug in KNewStuff or core libraries. USNO catalog had help to find such bug before I think it is really bug it the kdelibs so I'm reassigning the bug. Most likely it's 32-bit integer overflow. Unpacked USNO catalog is bigger than 2GB. 
Below is definition of function in which crash occurs. d->size has type qint64 while arr.size() has type int. So there is place to overflow. I maybe wrong but it's right direction to move.
QByteArray KArchiveFile::data() const
{
  archive()->device()->seek( d->pos );
  // Read content
  QByteArray arr;
  if ( d->size )
  {
    assert( arr.data() );
    arr = archive()->device()->read( d->size );
    Q_ASSERT( arr.size() == d->size );
  }
  return arr;
}
P.S. Reading whole file into memory isn't really good idea I believe.
    Created attachment 49364 [details]
New crash information added by DrKonqi
 I was downloading "USNO NOMAD Catalog"
    SVN commit 1167506 by cfeck: Fix KArchive::copyTo() for large files FIXED-IN: 4.5.1 BUG: 237124 Also see http://reviewboard.kde.org/r/4938/ M +16 -3 karchive.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1167506 SVN commit 1167508 by cfeck: Fix KArchive::copyTo() for large files (backport r1167506) CCBUG: 237124 M +16 -3 karchive.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1167508 *** Bug 246985 has been marked as a duplicate of this bug. *** *** Bug 253253 has been marked as a duplicate of this bug. *** *** Bug 262289 has been marked as a duplicate of this bug. *** *** Bug 269837 has been marked as a duplicate of this bug. ***  |