< jamesh> Mirv: okay.  The tests in my thumbnailer branch no longer
crash with the silo applied.

** Description changed:

  While working on the new thumbnailer, we've been using the new
  QQuickAsyncImageProvider API.  The API allows us to report errors by
  overriding the errorString() method on QQuickImageResponse to return a
  non-empty string.  However, if I do so the application crashes.
  
  Loading up the symbols to get a stack trace shows this to be a bug in
  the logic of QQuickPixmapReader::asyncResponseFinished:
  
-         QQuickTextureFactory *t = 0;
-         QQuickPixmapReply::ReadError error = QQuickPixmapReply::NoError;
-         QString errorString;
-         QSize readSize;
-         if (!response->errorString().isEmpty()) {
-             error = QQuickPixmapReply::Loading;
-             errorString = response->errorString();
-         } else {
-             t = response->textureFactory();
-        }
-         mutex.lock();
-         if (!cancelled.contains(job))
-             job->postReply(error, errorString, t->textureSize(), t);
-         mutex.unlock();
+         QQuickTextureFactory *t = 0;
+         QQuickPixmapReply::ReadError error = QQuickPixmapReply::NoError;
+         QString errorString;
+         QSize readSize;
+         if (!response->errorString().isEmpty()) {
+             error = QQuickPixmapReply::Loading;
+             errorString = response->errorString();
+         } else {
+             t = response->textureFactory();
+        }
+         mutex.lock();
+         if (!cancelled.contains(job))
+             job->postReply(error, errorString, t->textureSize(), t);
+         mutex.unlock();
  
  If errorString() is not empty, then t will still be NULL.  It is then
  dereferenced to call t->textureSize() resulting in a segfault.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 15.10
  Package: libqt5quick5 5.4.2-1ubuntu1
  ProcVersionSignature: Ubuntu 3.19.0-20.20-generic 3.19.8
  Uname: Linux 3.19.0-20-generic x86_64
  ApportVersion: 2.17.3-0ubuntu4
  Architecture: amd64
  CurrentDesktop: Unity
  Date: Mon Jun 29 14:53:49 2015
  InstallationDate: Installed on 2013-10-29 (607 days ago)
  InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Release amd64 
(20131016.1)
  SourcePackage: qtdeclarative-opensource-src
  UpgradeStatus: Upgraded to wily on 2015-06-13 (15 days ago)
+ 
+ Test case:
+ 
+ - bzr branch lp:~jamesh/thumbnailer/no-fallback-albumart
+ - build the branch
+ - run ctest -R qml --verbose
+ -> crash or no crash (don't mind pass/fail)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1469611

Title:
  QQuickPixmapReader::asyncResponseFinished segfaults if a
  QQuickAsyncImageProvider returns an error response

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/qtdeclarative-opensource-src/+bug/1469611/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to