[SailfishDevel] Boosted process (pid=721) was terminated due to signal 11: SOLVED
Luciano Montanaro
mikelima at gmail.com
Sun Dec 29 16:27:49 UTC 2013
Good to know you found the problem.
I could have been a bit more explicit, your solution is basically what
I had to do as well. It is better to check for pointers being valid
before using anyway!
I suppose the user can disable GPS to save battery, and not all
positionInfoSources may be available on all devices.
Regards, I will have a slice of cake as well. :)
On Sun, Dec 29, 2013 at 3:16 PM, <christopher.lamb at thurweb.ch> wrote:
> Ciao Luciano
>
> I have cracked it!
>
> I should have read the QtCreator Debug output more closely.
>
> Using a constructor based on yours, I get:
>
> [D] SatInfoSource::SatInfoSource:18 - No satellite info source available
>
> as the demo starts up.
>
> The problem occurs when myGeoSatelliteInfoSource->startUpdates() is called
> without a satellite info source being available.
>
> However if I check for that with an if{} (as below), then the app no longer
> crashes.
>
>
> void SatInfoSource::startUpdates() {
> if (myGeoSatelliteInfoSource) {
> myGeoSatelliteInfoSource->startUpdates();
> }
> else {
> qDebug() << "Start Updates requested, but no position info source
> available";
> }
> }
>
> Me thinks time for a piece of Christmas Cake.
>
> Thanks
>
> Chris
>
>
> Zitat von christopher.lamb at thurweb.ch:
>
>> Ciao Luciano
>>
>> Thanks for the ideas. I agree this is most likely down to a missing "real
>> gps" on the emulator. If that is the case then it would be fantastic if the
>> emulator shipped with a GPS emulator (like the one on the Nokia simulator).
>>
>> My constructor now looks like this:
>> SatInfoSource::SatInfoSource(QObject *parent) :
>> QObject(parent),
>>
>> myGeoSatelliteInfoSource(QGeoSatelliteInfoSource::createDefaultSource(this)),
>> _satsInUse(0),
>> _satsInView(0)
>> {
>> if (myGeoSatelliteInfoSource) {
>> qDebug() << "position info source available";
>> connect(myGeoSatelliteInfoSource,
>> SIGNAL(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &)), this,
>> SLOT(onSatsInViewUpdated(const QList<QGeoSatelliteInfo> &)));
>> connect(myGeoSatelliteInfoSource,
>> SIGNAL(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &)), this,
>> SLOT(onSatsInUseUpdated(const QList<QGeoSatelliteInfo> &)));
>> }
>> else {
>> qDebug() << "No position info source available";
>> }
>> }
>>
>> However I still get the crash.
>>
>> One thing that I have noticed, I am using QGeoSatelliteInfoSource, where
>> as your code uses QGeoPositionInfoSource. (You may need to read that twice
>> to see the difference 8-) ). I wonder if this is a change from Qt4 to Qt5? I
>> will do a bit of googling and search for examples on my host.
>>
>> 1000 grazie
>>
>> Chis
>>
>> p.s. according to FedEx my phone has now made it via Charles de Gaulle to
>> Basel, and should be delivered to Zurich tomorrow, so there is a chance that
>> I can try this on real hardware before the end of the year ... touch wood.
>>
>> Zitat von "Luciano Montanaro" <mikelima at gmail.com>:
>>
>>> I had crashes as well...
>>>
>>> My code looks similar to yours, and I experienced the crash as well
>>> (in the emulator, I suspected because there is no GPS on it, but...)
>>>
>>> I found out that I needed to check for the positionInfoSource being
>>> valid:
>>>
>>> Relevant snippets here:
>>>
>>> StationListProxyModel::StationListProxyModel(QObject *parent) :
>>> QSortFilterProxyModel(parent),
>>> positionInfoSource(QGeoPositionInfoSource::createDefaultSource(this)),
>>> m_here(44.5, 9.0),
>>> m_filterRecentOnly(false)
>>> {
>>>
>>> ...
>>>
>>> if (positionInfoSource) {
>>> qDebug() << "position info source available";
>>> connect(positionInfoSource,
>>> SIGNAL(positionUpdated(QGeoPositionInfo)),
>>> SLOT(updatePosition(QGeoPositionInfo)));
>>> positionInfoSource->setUpdateInterval(5000);
>>> } else {
>>> qDebug() << "No position info source available";
>>> }
>>>
>>> ...
>>>
>>> }
>>>
>>> On Sun, Dec 29, 2013 at 11:02 AM, <christopher.lamb at thurweb.ch> wrote:
>>>>
>>>> Curiouser and curiouser. Today the app still exits on GPS Startup, but
>>>> the
>>>> Signal 11 error is not being reported, even though this was repeatedly
>>>> the
>>>> case last night.
>>>>
>>>> In the meantime I have created a throwaway demo SatInfoSourceDemo
>>>> illustrating the problem. (Basically the standard Sailfish template, +
>>>> satinfosource.h and .cpp)
>>>>
>>>> The app exits as soon as satInfoSource.startUpdates(); is called. (In
>>>> this
>>>> demo from the Pulley Menu on FirstPage.qml
>>>>
>>>> I am guessing the problem is either in my satinfocource plugin, or more
>>>> likely in the Qt5Positioning Library this is calling. The Harmattan
>>>> equivalent of htis code works on a real N9.
>>>>
>>>> The code of the Throwaway demo is pasted below.
>>>>
>>>> Thanks
>>>>
>>>> Chris
>>>>
>>>>
>>>> yaml
>>>> PkgBR: qt5-qtpositioning-devel
>>>> Requires: qt5-qtpositioning
>>>>
>>>>
>>>> //start satinfosource.h
>>>> #ifndef SATINFOSOURCE_H
>>>> #define SATINFOSOURCE_H
>>>>
>>>> #include <QObject>
>>>>
>>>> #include <QtPositioning/QGeoSatelliteInfoSource>
>>>>
>>>> class SatInfoSource : public QObject
>>>> {
>>>> Q_OBJECT
>>>> Q_PROPERTY(int satsInView READ satsInView NOTIFY
>>>> satellitesInViewChanged)
>>>> Q_PROPERTY(int satsInUse READ satsInUse NOTIFY
>>>> satellitesInUseChanged)
>>>>
>>>>
>>>> public:
>>>> explicit SatInfoSource(QObject *parent = 0);
>>>> ~SatInfoSource();
>>>>
>>>> Q_INVOKABLE void startUpdates();
>>>> Q_INVOKABLE void stopUpdates();
>>>>
>>>> int satsInView() const;
>>>> int satsInUse() const;
>>>>
>>>> signals:
>>>> void satellitesInViewChanged(const int &satsInView);
>>>> void satellitesInUseChanged(const int &satsInUse);
>>>>
>>>>
>>>> private slots:
>>>> void onSatsInViewUpdated(const QList<QGeoSatelliteInfo> &list);
>>>> void onSatsInUseUpdated(const QList<QGeoSatelliteInfo> &list);
>>>>
>>>> private:
>>>> QGeoSatelliteInfoSource *myGeoSatelliteInfoSource;
>>>> int _satsInUse;
>>>> int _satsInView;
>>>>
>>>> };
>>>>
>>>> #endif // SATINFOSOURCE_H
>>>> //end satinfosource.h
>>>>
>>>> //start satinfosource.cpp
>>>> #include "satinfosource.h"
>>>> #include <QDebug>
>>>>
>>>> SatInfoSource::SatInfoSource(QObject *parent) :
>>>> QObject(parent), _satsInUse(0), _satsInView(0)
>>>> {
>>>> myGeoSatelliteInfoSource =
>>>> QGeoSatelliteInfoSource::createDefaultSource(0);
>>>> connect(myGeoSatelliteInfoSource,
>>>> SIGNAL(satellitesInViewUpdated(const
>>>> QList<QGeoSatelliteInfo> &)), this, SLOT(onSatsInViewUpdated(const
>>>> QList<QGeoSatelliteInfo> &)));
>>>> connect(myGeoSatelliteInfoSource, SIGNAL(satellitesInUseUpdated(const
>>>> QList<QGeoSatelliteInfo> &)), this, SLOT(onSatsInUseUpdated(const
>>>> QList<QGeoSatelliteInfo> &)));
>>>> }
>>>>
>>>> SatInfoSource::~SatInfoSource()
>>>> {
>>>> }
>>>>
>>>> void SatInfoSource::startUpdates() {
>>>> myGeoSatelliteInfoSource->startUpdates();
>>>> }
>>>>
>>>> void SatInfoSource::stopUpdates() {
>>>> myGeoSatelliteInfoSource->stopUpdates();
>>>> }
>>>>
>>>> int SatInfoSource::satsInView() const
>>>> {
>>>> return _satsInView;
>>>> }
>>>>
>>>> int SatInfoSource::satsInUse() const
>>>> {
>>>> return _satsInUse;
>>>> }
>>>>
>>>> void SatInfoSource::onSatsInViewUpdated(const QList<QGeoSatelliteInfo>
>>>> &list) {
>>>> int newInView = list.count();
>>>> if (newInView != _satsInView) {
>>>> qDebug() << "satInfoSource.cpp: onSatsinViewUpdated: " <<
>>>> QString::number(newInView, 'g', 2);
>>>> _satsInView = newInView;
>>>> emit satellitesInViewChanged(newInView);
>>>> }
>>>>
>>>> }
>>>>
>>>> void SatInfoSource::onSatsInUseUpdated(const QList<QGeoSatelliteInfo>
>>>> &list)
>>>> {
>>>> int newInUse = list.count();
>>>> if (newInUse != _satsInUse) {
>>>> qDebug() << "satInfoSource.cpp: onSatsinUseUpdated: " <<
>>>> QString::number(newInUse, 'g', 2);
>>>> _satsInUse = newInUse;
>>>> emit satellitesInUseChanged(newInUse);
>>>> }
>>>> }
>>>> //end satinfosource.cpp
>>>>
>>>> //start SatInfoSourceDemo.qml
>>>> import QtQuick 2.0
>>>> import Sailfish.Silica 1.0
>>>> import "pages"
>>>>
>>>> ApplicationWindow
>>>> {
>>>> initialPage: Component { FirstPage { } }
>>>> cover: Qt.resolvedUrl("cover/CoverPage.qml")
>>>> }
>>>> //end SatInfoSourceDemo.qml
>>>>
>>>>
>>>> //start FirstPage.qml
>>>> import QtQuick 2.0
>>>> import Sailfish.Silica 1.0
>>>> import SatInfoSource 1.0 //for info about satellites (in view, in use)
>>>>
>>>> Page {
>>>> id: page
>>>>
>>>> SatInfoSource {
>>>> id: satInfoSource
>>>>
>>>> onSatellitesInUseChanged: {
>>>> console.log("GPSBackEnd: SatellitesInUseChanged! " +
>>>> satsInUse +
>>>> "; " + thisGPSBackEnd.satsInUse);
>>>> }
>>>> onSatellitesInViewChanged: {
>>>> console.log("GPSBackEnd: SatellitesInViewChanged! " +
>>>> satsInView
>>>> + "; " + thisGPSBackEnd.satsInView);
>>>> }
>>>> }
>>>>
>>>> SilicaFlickable {
>>>> anchors.fill: parent
>>>> PullDownMenu {
>>>> MenuItem {
>>>> text: "Start SatInfoSource"
>>>> onClicked: {
>>>> console.log("turning GPS on")
>>>> satInfoSource.startUpdates();
>>>> }
>>>> }
>>>> }
>>>> }
>>>> }
>>>> //end FirstPage.qml
>>>>
>>>> //start SatInfoSourceDemo.cpp
>>>> #ifdef QT_QML_DEBUG
>>>> #include <QtQuick>
>>>> #endif
>>>>
>>>> #include <sailfishapp.h>
>>>> #include "satinfosource.h"
>>>>
>>>> int main(int argc, char *argv[])
>>>> {
>>>> qmlRegisterType<SatInfoSource>("SatInfoSource",1,0,"SatInfoSource");
>>>> return SailfishApp::main(argc, argv);
>>>> }
>>>> //end SatInfoSourceDemo.cpp
>>>>
>>>> //start SatInfoSourceDemo.pro
>>>> TARGET = SatInfoSourceDemo
>>>>
>>>> CONFIG += sailfishapp
>>>>
>>>> QT += positioning
>>>>
>>>> SOURCES += src/SatInfoSourceDemo.cpp \
>>>> src/satinfosource.cpp
>>>>
>>>> HEADERS += \
>>>> satinfosource.h
>>>>
>>>> OTHER_FILES += qml/SatInfoSourceDemo.qml \
>>>> qml/cover/CoverPage.qml \
>>>> qml/pages/FirstPage.qml \
>>>> rpm/SatInfoSourceDemo.spec \
>>>> rpm/SatInfoSourceDemo.yaml \
>>>> SatInfoSourceDemo.desktop
>>>> //end SatInfoSourceDemo.pro
>>>>
>>>>
>>>>
>>>>
>>>> Zitat von "Andrey Kozhevnikov" <coderusinbox at gmail.com>:
>>>>
>>>>
>>>>> use gdb, bro 8)
>>>>>
>>>>> On 28.12.2013 22:45, christopher.lamb at thurweb.ch wrote:
>>>>>>
>>>>>>
>>>>>> Hi All
>>>>>>
>>>>>> My application quits unexpectedly during startup, apparently due to
>>>>>> "signal 11".
>>>>>>
>>>>>> This seems to be caused by turning the GPS on, as the error occurs
>>>>>> immediately after the app does that.
>>>>>>
>>>>>> I experience this on the Emulator, so it maybe down to the Emulator
>>>>>> not
>>>>>> having a real GPS. (my Jolla phone is currently in transit between
>>>>>> Vantaa
>>>>>> and Zurich according to Fedex).
>>>>>>
>>>>>> I will create a throwaway demo with just GPS to prove / disprove if
>>>>>> the
>>>>>> error is caused by GPS activate (or just bad timing).
>>>>>>
>>>>>> Googling for Signal 11 has revealed little. I have come across some
>>>>>> references to this error on Android related to memory leaks.
>>>>>>
>>>>>> journalctl output is below:
>>>>>>
>>>>>>
>>>>>> Chris
>>>>>>
>>>>>>
>>>>>> Dec 28 18:22:57 SailfishEmul landed25_QT5[721]: [D] onStatusChanged:59
>>>>>> -
>>>>>> MainPage: turning GPS on ...
>>>>>> Dec 28 18:22:57 SailfishEmul landed25_QT5[721]: [D] onGPS:36 - turning
>>>>>> GPS on
>>>>>> Dec 28 18:22:57 SailfishEmul mapplauncherd[594]: Boosted process
>>>>>> (pid=721) was terminated due to signal 11
>>>>>> Dec 28 18:22:57 SailfishEmul invoker[751]: error: Can't send signal 11
>>>>>> to
>>>>>> application [721]: No such process
>>>>>>
>>>>>> _______________________________________________
>>>>>> SailfishOS.org Devel mailing list
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> SailfishOS.org Devel mailing list
>>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> SailfishOS.org Devel mailing list
>>>
>>>
>>>
>>>
>>> --
>>> Luciano Montanaro
>>>
>>> Anyone who is capable of getting themselves made President should on
>>> no account be allowed to do the job. -- Douglas Adams
>>> _______________________________________________
>>> SailfishOS.org Devel mailing list
>>>
>>
>>
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>>
>
>
>
--
Luciano Montanaro
Anyone who is capable of getting themselves made President should on
no account be allowed to do the job. -- Douglas Adams
More information about the Devel
mailing list