[SailfishDevel] Boosted process (pid=721) was terminated due to signal 11: SOLVED
christopher.lamb at thurweb.ch
christopher.lamb at thurweb.ch
Sun Dec 29 14:16:00 UTC 2013
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
>
More information about the Devel
mailing list