dataChanged signal cannot be used on ARM under certain conditions

Bug #1441961 reported by Nathan Osman
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
binutils (Ubuntu)
Fix Released
Undecided
Unassigned
Trusty
Fix Released
Undecided
Unassigned
qtbase-opensource-src (Ubuntu)
Fix Released
Undecided
Unassigned
Trusty
Won't Fix
Undecided
Unassigned

Bug Description

This is probably the strangest bug I have ever observed, but it is completely reproducible. When running the attached Qt application, I receive the following error:

    QObject::connect: signal not found in Test

This error is 100% reproducible on my Raspberry Pi 2 running Ubuntu 14.04.2 (Trusty). This device has an ARMv7 CPU (Broadcom BCM2836). I cannot reproduce this error on any other hardware (x86 and amd64 have been tested). This does not appear to be a compiler bug since both g++ and Clang produce an executable that prints the above error.

Here's the thing that really confuses me: the error disappears (and everything works correctly) if I comment out the "dataChanged(...)" line in test.cpp. This is completely bizarre because the line is never executed by any code.

I've tried digging through Qt's headers and buried myself neck-deep in macros, templates, and MOC-generated files. I can't make any sense out of this. Therefore I am reporting it as a bug. To compile the example, enter the source directory, run "qmake", and then run "make" to build the executable. Remember, the bug only manifests itself on an ARM CPU.

Revision history for this message
Nathan Osman (george-edison55) wrote :
Revision history for this message
Dmitry Shachnev (mitya57) wrote :

Can you try to use the old connection syntax? The new syntax is known to be unreliable on some architectures.

Revision history for this message
Nathan Osman (george-edison55) wrote :

The old connection syntax appears to work fine. Also, I finally managed to get Utopic up and running on the device and surprisingly, the problem with my example has disappeared. However, it appears to be a compile-time issue since anything compiled with Qt 5.2.1 in Trusty still fails to work when run in Utopic. It must be recompiled in Utopic.

Revision history for this message
Nathan Osman (george-edison55) wrote :

Aha! I have found the Qt bug that corresponds with this issue: https://bugreports.qt.io/browse/QTBUG-36129

This was fixed in 5.3.0 (which is the version Utopic ships with). However, this doesn't help Trusty users since existing applications will fail to work. Is there any chance that this fix could be backported to Trusty? This is the patch that would need to be applied: https://codereview.qt-project.org/#/c/81095/2//ALL,unified

Revision history for this message
Dmitry Shachnev (mitya57) wrote :

The patch you point to was never applied to Ubuntu packages. Even more, we have reverted it in all our releases.

The proper fix to this bug on ARM is in binutils: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=97323ad11305.

Dear binutils maintainers: do you think it will be possible to backport the above fix to Trusty?

Revision history for this message
Matthias Klose (doko) wrote :

fixed for 15.04. currently building in the ubuntu-toolchain-r/ppa PPA.

Changed in binutils (Ubuntu):
status: New → Fix Released
Revision history for this message
Steve Langasek (vorlon) wrote : Please test proposed package

Hello Nathan, or anyone else affected,

Accepted binutils into trusty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/binutils/2.24-5ubuntu13 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in binutils (Ubuntu Trusty):
status: New → Fix Committed
tags: added: verification-needed
Revision history for this message
Nathan Osman (george-edison55) wrote :

Thanks for getting this into trusty-proposed. I built the application again using the new binutils package and I can confirm that it now works perfectly.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package binutils - 2.24-5ubuntu13

---------------
binutils (2.24-5ubuntu13) trusty-proposed; urgency=medium

  * SRU LP: #1311866.
  * Update from the 2.24 branch, 20141113.
    - Fix PR gold/16945, properly handle 64-bit GOT relocations on x86_64.
    - Fix PR gold/16900, an issue where first reserved word of GOT is not
      initialized if there is no PLT.
    - gold: Fix handling of __ehdr_start when it cannot be defined.
    - Apply mainline patches for ppc476 workaround.
    - Add binutils test cases for AArch64.
    - Disassembler fix on AArch64.
    - Fix PR ld/17047, crash in the bfd linker with MALLOC_PERTURB.
    - Fix PR ld/17277, ARM32, bogus DT_TEXTREL marker (and R_ARM_NONE)
      for PC-relative cross-section relocs.
    - [AArch64] Cortex-A53 erratum 835769 linker workaround.
  * Remove the aarch64-fix-instruction-mask, applied on the branch.
  * Fix PR gold/15639, -flto and ld.gold on ARM. LP: #1191909.
  * Use 64k for COMMONPAGESIZE on PPC. LP: #1412553.
  * Fix PR ld/16452, PR ld/16457, don't output symbol version definitions
    for non-DT_NEEDED. LP: #1248642.
  * Add powerpc target for ppc64el builds. Closes: #760395. LP: #1433238.
  * binutils-doc: Include all info files. LP: #1410780.
  * Fix PR ld/16715 (ARM), set st_value to zero for undefined symbols.
    LP: #1441961.
 -- Matthias Klose <email address hidden> Tue, 14 Apr 2015 19:52:45 +0200

Changed in binutils (Ubuntu Trusty):
status: Fix Committed → Fix Released
Revision history for this message
Steve Langasek (vorlon) wrote : Update Released

The verification of the Stable Release Update for binutils has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

We don't revert the upstream patch anymore - that is -Bsymbolic is disabled on non-x86 Qt indefinitely currently. Furthermore, trusty won't be changed anymore regarding this.

Changed in qtbase-opensource-src (Ubuntu):
status: New → Fix Released
Changed in qtbase-opensource-src (Ubuntu Trusty):
status: New → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.