Hi Laszlo, On 08/24/2013 12:15 PM, Laszlo Papp wrote:
This is strange. According to the bugtracker it should be in 4.8.5 already... and the recipe seems to be about 4.8.5. It needs more investigation.
I saw this, but there's no evidence that any change was committed and I verified that the bug is still there (it's trivially easy to reproduce) and that this patch fixes it.
On Sat, Aug 24, 2013 at 8:13 PM, Saul Wold <s...@linux.intel.com <mailto:s...@linux.intel.com>> wrote: On 08/24/2013 09:49 AM, Eric Nelson wrote: This patch adds a patch for Qt-Embedded to only destroy semaphores in the process which created them. Original patch by Neil Jerram for the OpenMoko project: http://lists.openmoko.org/__pipermail/community/2012-__November/067806.html <http://lists.openmoko.org/pipermail/community/2012-November/067806.html> See also Bug 31254: https://bugreports.qt-project.__org/browse/QTBUG-31254 <https://bugreports.qt-project.org/browse/QTBUG-31254> Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.__com <mailto:eric.nel...@boundarydevices.com>> Besides this, we need an Upstream-Status: Tag, this is either a Backport or Submitted maybe?
I submitted a patch, but haven't received any feedback from the Qt'ers: https://codereview.qt-project.org/#change,62842 Should I re-send with Upstream-Status: tag and a reference?
Sau! --- meta/recipes-qt/qt4/qt4-4.8.5.__inc | 1 + ...-Only-destroy-semaphores-__in-process-owner.patch | 77 ++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 meta/recipes-qt/qt4/qt4-4.8.5/__0028-QWSLock-Only-destroy-__semaphores-in-process-owner.__patch diff --git a/meta/recipes-qt/qt4/qt4-4.8.__5.inc b/meta/recipes-qt/qt4/qt4-4.8.__5.inc index 95a14f3..be16bff 100644 --- a/meta/recipes-qt/qt4/qt4-4.8.__5.inc +++ b/meta/recipes-qt/qt4/qt4-4.8.__5.inc @@ -24,6 +24,7 @@ SRC_URI = "http://download.qt-project.__org/official_releases/qt/4.8/$__{PV}/qt-ever <http://download.qt-project.org/official_releases/qt/4.8/$%7BPV%7D/qt-ever> file://0022-Fix-drawing-of-0-__width-polylines-from-outside-__the-de.patch \ file://0023-QHttpMultiPart-__fix-data-corruption-in-__readData-metho.patch \ file://0027-tools.pro-disable-__qmeegographicssystemhelper.__patch \ + file://0028-QWSLock-Only-__destroy-semaphores-in-process-__owner.patch \ file://g++.conf \ file://linux.conf \ " diff --git a/meta/recipes-qt/qt4/qt4-4.8.__5/0028-QWSLock-Only-destroy-__semaphores-in-process-owner.__patch b/meta/recipes-qt/qt4/qt4-4.8.__5/0028-QWSLock-Only-destroy-__semaphores-in-process-owner.__patch new file mode 100644 index 0000000..d67a746 --- /dev/null +++ b/meta/recipes-qt/qt4/qt4-4.8.__5/0028-QWSLock-Only-destroy-__semaphores-in-process-owner.__patch @@ -0,0 +1,77 @@ +From 9af565935d16ecf8a8c04b5ea850dd__b34a7c1294 Mon Sep 17 00:00:00 2001 +From: Eric Nelson <eric.nelson@boundarydevices.__com <mailto:eric.nel...@boundarydevices.com>> +Date: Mon, 12 Aug 2013 11:54:05 -0700 +Subject: [PATCH] QWSLock: Only destroy semaphores in process owner + +This fixes the case when QT_POSIX_IPC is not defined. + +Original patch by Neil Jerram for the OpenMoko project: + http://lists.openmoko.org/__pipermail/community/2012-__November/067806.html <http://lists.openmoko.org/pipermail/community/2012-November/067806.html> + +See also Bug 31254: + https://bugreports.qt-project.__org/browse/QTBUG-31254 <https://bugreports.qt-project.org/browse/QTBUG-31254> + +Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.__com <mailto:eric.nel...@boundarydevices.com>> +--- + src/gui/embedded/qwslock.cpp | 13 +++++++++---- + src/gui/embedded/qwslock_p.h | 2 +- + 2 files changed, 10 insertions(+), 5 deletions(-) + +diff --git a/src/gui/embedded/qwslock.cpp b/src/gui/embedded/qwslock.cpp +index 3f8f306..cd6a48d 100644 +--- a/src/gui/embedded/qwslock.cpp ++++ b/src/gui/embedded/qwslock.cpp +@@ -83,9 +83,12 @@ QWSLock::QWSLock(int id) : semId(id) + QWSSignalHandler::instance()->__addWSLock(this); + #endif + ++ owned = false; ++ + #ifndef QT_POSIX_IPC + if (semId == -1) { + semId = semget(IPC_PRIVATE, 3, IPC_CREAT | 0666); ++ owned = true; + if (semId == -1) { + perror("QWSLock::QWSLock"); + qFatal("Unable to create semaphore"); +@@ -100,7 +103,6 @@ QWSLock::QWSLock(int id) : semId(id) + } + #else + sems[0] = sems[1] = sems[2] = SEM_FAILED; +- owned = false; + + if (semId == -1) { + // ### generate really unique IDs +@@ -134,9 +136,12 @@ QWSLock::~QWSLock() + + if (semId != -1) { + #ifndef QT_POSIX_IPC +- qt_semun semval; +- semval.val = 0; +- semctl(semId, 0, IPC_RMID, semval); ++ ++ if (owned) { ++ qt_semun semval; ++ semval.val = 0; ++ semctl(semId, 0, IPC_RMID, semval); ++ } + semId = -1; + #else + // emulate the SEM_UNDO behavior for the BackingStore lock +diff --git a/src/gui/embedded/qwslock_p.h b/src/gui/embedded/qwslock_p.h +index ead7b89..d16b3d5 100644 +--- a/src/gui/embedded/qwslock_p.h ++++ b/src/gui/embedded/qwslock_p.h +@@ -86,8 +86,8 @@ private: + int lockCount[2]; + #ifdef QT_POSIX_IPC + sem_t *sems[3]; +- bool owned; + #endif ++ bool owned; + }; + + QT_END_NAMESPACE +-- +1.8.1.2 + _________________________________________________ Openembedded-core mailing list Openembedded-core@lists.__openembedded.org <mailto:Openembedded-core@lists.openembedded.org> http://lists.openembedded.org/__mailman/listinfo/openembedded-__core <http://lists.openembedded.org/mailman/listinfo/openembedded-core>
_______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core