Notices


Reply
Thread Tools
Posts: 302 | Thanked: 1,339 times | Joined on Aug 2016 @ Estonia
#101
Originally Posted by Zeta View Post
Probably too late and maybe not that useful, I found that Qt has a dedicated C++ class to handle the "panning, flicking and pinch-to-zoom" gestures in their map object : http://doc.qt.io/qt-5/qml-qtlocation...sturearea.html

It is said to be available since QtLocation 5.0, but the minimal include is related to a 5.3 version (so maybe not available on Sailfish with its 5.2 QtLocation...).

Anyway, the code can be looked at here for the latest Qt5.9 and seems not that easy :
http://code.qt.io/cgit/qt/qtlocation...area.cpp?h=5.9

For older version, the path was a bit different :
http://code.qt.io/cgit/qt/qtlocation...area.cpp?h=5.3


Maybe some ideas in that code can help you...
Hi! I looked into it earlier and it was rather dependent on qtlocation implementation, hence my interest in pure QML solution. I hope we can get it working with QML and would avoid decoupling qquickgeomapgesturearea.cpp from the rest of qtlocation code.
 

The Following 2 Users Say Thank You to rinigus For This Useful Post:
Posts: 302 | Thanked: 1,339 times | Joined on Aug 2016 @ Estonia
#102
The first round of porting a real application (Poor Maps) is done and I have extended the API accordingly. There is still work to be done to finish the port, but I think - in API terms of QML interface - lots of it has been done and should be possible to use in practice. Few bugs have been found and fixed in meanwhile.

So, if you wish to get hands dirty and add Mapbox GL-based map to your app, feel free to try. I'll be happy to help and extend / modify the API according to the requirements.
 

The Following User Says Thank You to rinigus For This Useful Post:
Posts: 1,385 | Thanked: 6,321 times | Joined on Apr 2010 @ Czech Republic
#103
Originally Posted by rinigus View Post
Very-very simple (instructions have not been tested in real life, correct as needed):

* clone recursively https://github.com/rinigus/pkg-mapbox-gl-native

* make subdir build

* copy mapbox-gl-native-lib.pro to mapbox-gl-native subdir

* in build subdir, qmake5 ../mapbox-gl-native/mapbox-gl-native-lib.pro

* make -jXX

* clone https://github.com/rinigus/mapbox-gl-qml

* open in QtCreator mapbox-gl-qml/app/mapbox-qml.pro

* Adjust mapbox-qml.pro (https://github.com/rinigus/mapbox-gl...ox-qml.pro#L12 ) INCLUDEPATH and LIBS to point to pkg-mapbox-gl-native/build and pkg-mapbox-gl-native/mapbox-gl-native location accordingly.
Got as far as this but it's wont compile, complaining about some sqlite3.cpp errors:

Code:
01:28:34: Running steps for project mapbox-qml...
01:28:34: Configuration unchanged, skipping qmake step.
01:28:34: Starting: "/usr/bin/make" 
g++  -o mapbox-qml main.o qquickitemmapboxgl.o qsgmapboxglnode.o qsgtextureplain.o qmapboxsync.o qrc_qml.o moc_qquickitemmapboxgl.o moc_qsgmapboxglnode.o moc_qsgtextureplain.o   -L../../pkg-mapbox-gl-native/build -lqmapboxgl -lz -lQt5Location -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Positioning -lQt5Core -lGL -lpthread 
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::checkQueryError(QSqlQuery const&)':
sqlite3.cpp:(.text+0x16a): undefined reference to `QSqlQuery::lastError() const'
sqlite3.cpp:(.text+0x172): undefined reference to `QSqlError::type() const'
sqlite3.cpp:(.text+0x17e): undefined reference to `QSqlError::~QSqlError()'
sqlite3.cpp:(.text+0x1a8): undefined reference to `QSqlError::nativeErrorCode() const'
sqlite3.cpp:(.text+0x1ca): undefined reference to `QSqlError::text() const'
sqlite3.cpp:(.text+0x238): undefined reference to `QSqlError::~QSqlError()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::checkDatabaseError(QSqlDatabase const&)':
sqlite3.cpp:(.text+0x2aa): undefined reference to `QSqlDatabase::lastError() const'
sqlite3.cpp:(.text+0x2b2): undefined reference to `QSqlError::type() const'
sqlite3.cpp:(.text+0x2be): undefined reference to `QSqlError::~QSqlError()'
sqlite3.cpp:(.text+0x2e8): undefined reference to `QSqlError::nativeErrorCode() const'
sqlite3.cpp:(.text+0x30a): undefined reference to `QSqlError::text() const'
sqlite3.cpp:(.text+0x378): undefined reference to `QSqlError::~QSqlError()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::checkDatabaseOpenError(QSqlDatabase const&)':
sqlite3.cpp:(.text+0x3e2): undefined reference to `QSqlDatabase::lastError() const'
sqlite3.cpp:(.text+0x3ea): undefined reference to `QSqlError::type() const'
sqlite3.cpp:(.text+0x3f6): undefined reference to `QSqlError::~QSqlError()'
sqlite3.cpp:(.text+0x44e): undefined reference to `QSqlError::~QSqlError()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Database::~Database()':
sqlite3.cpp:(.text+0x4a2): undefined reference to `QSqlDatabase::close()'
sqlite3.cpp:(.text+0x4ba): undefined reference to `QSqlDatabase::~QSqlDatabase()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Statement::Statement(mapbox::sqlite::Database*, char const*)':
sqlite3.cpp:(.text+0x53f): undefined reference to `QSqlDatabase::QSqlDatabase(QSqlDatabase const&)'
sqlite3.cpp:(.text+0x54a): undefined reference to `QSqlQuery::QSqlQuery(QSqlDatabase)'
sqlite3.cpp:(.text+0x555): undefined reference to `QSqlDatabase::~QSqlDatabase()'
sqlite3.cpp:(.text+0x572): undefined reference to `QSqlQuery::setForwardOnly(bool)'
sqlite3.cpp:(.text+0x580): undefined reference to `QSqlQuery::prepare(QString const&)'
sqlite3.cpp:(.text+0x5e1): undefined reference to `QSqlQuery::~QSqlQuery()'
sqlite3.cpp:(.text+0x60c): undefined reference to `QSqlDatabase::~QSqlDatabase()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Statement::~Statement()':
sqlite3.cpp:(.text+0x66d): undefined reference to `QSqlQuery::clear()'
sqlite3.cpp:(.text+0x675): undefined reference to `QSqlQuery::~QSqlQuery()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `void mapbox::sqlite::Statement::bind<decltype(nullptr)>(int, decltype(nullptr))':
sqlite3.cpp:(.text+0x6ce): undefined reference to `QSqlQuery::bindValue(int, QVariant const&, QFlags<QSql::ParamTypeFlag>)'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Statement::bind(int, char const*, unsigned long, bool)':
sqlite3.cpp:(.text+0x7d7): undefined reference to `QSqlQuery::bindValue(int, QVariant const&, QFlags<QSql::ParamTypeFlag>)'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Statement::bindBlob(int, void const*, unsigned long, bool)':
sqlite3.cpp:(.text+0x92e): undefined reference to `QSqlQuery::bindValue(int, QVariant const&, QFlags<QSql::ParamTypeFlag>)'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Statement::run()':
sqlite3.cpp:(.text+0x9ef): undefined reference to `QSqlQuery::isValid() const'
sqlite3.cpp:(.text+0xa04): undefined reference to `QSqlQuery::setForwardOnly(bool)'
sqlite3.cpp:(.text+0xa0c): undefined reference to `QSqlQuery::exec()'
sqlite3.cpp:(.text+0xa24): undefined reference to `QSqlQuery::lastInsertId() const'
sqlite3.cpp:(.text+0xa66): undefined reference to `QSqlQuery::numRowsAffected() const'
sqlite3.cpp:(.text+0xa74): undefined reference to `QSqlQuery::next()'
sqlite3.cpp:(.text+0xa8c): undefined reference to `QSqlQuery::next()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `std::vector<unsigned char, std::allocator<unsigned char> > mapbox::sqlite::Statement::get<std::vector<unsigned char, std::allocator<unsigned char> > >(int)':
sqlite3.cpp:(.text+0xaf1): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1l> > > mapbox::sqlite::Statement::get<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1l> > > >(int)':
sqlite3.cpp:(.text+0xca7): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `std::experimental::fundamentals_v1::optional<long> mapbox::sqlite::Statement::get<std::experimental::fundamentals_v1::optional<long> >(int)':
sqlite3.cpp:(.text+0xd2a): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `std::experimental::fundamentals_v1::optional<double> mapbox::sqlite::Statement::get<std::experimental::fundamentals_v1::optional<double> >(int)':
sqlite3.cpp:(.text+0xdea): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > mapbox::sqlite::Statement::get<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(int)':
sqlite3.cpp:(.text+0xeb1): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o):sqlite3.cpp:(.text+0xf91): more undefined references to `QSqlQuery::value(int) const' follow
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Database::setBusyTimeout(std::chrono::duration<long, std::ratio<1l, 1000l> >)':
sqlite3.cpp:(.text+0x1219): undefined reference to `QSqlDatabase::connectOptions() const'
sqlite3.cpp:(.text+0x12e7): undefined reference to `QSqlDatabase::isOpen() const'
sqlite3.cpp:(.text+0x12f6): undefined reference to `QSqlDatabase::close()'
sqlite3.cpp:(.text+0x1304): undefined reference to `QSqlDatabase::setConnectOptions(QString const&)'
sqlite3.cpp:(.text+0x130f): undefined reference to `QSqlDatabase::open()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Database::Database(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)':
sqlite3.cpp:(.text+0x14ae): undefined reference to `QSqlDatabase::drivers()'
sqlite3.cpp:(.text+0x153c): undefined reference to `QSqlDatabase::addDatabase(QString const&, QString const&)'
sqlite3.cpp:(.text+0x155b): undefined reference to `QSqlDatabase::~QSqlDatabase()'
sqlite3.cpp:(.text+0x15a1): undefined reference to `QSqlDatabase::connectOptions() const'
sqlite3.cpp:(.text+0x1678): undefined reference to `QSqlDatabase::setConnectOptions(QString const&)'
sqlite3.cpp:(.text+0x16a8): undefined reference to `QSqlDatabase::setDatabaseName(QString const&)'
sqlite3.cpp:(.text+0x16d4): undefined reference to `QSqlDatabase::open()'
sqlite3.cpp:(.text+0x18a2): undefined reference to `QSqlDatabase::~QSqlDatabase()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Database::exec(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
sqlite3.cpp:(.text+0x1b15): undefined reference to `QSqlDatabase::QSqlDatabase(QSqlDatabase const&)'
sqlite3.cpp:(.text+0x1b20): undefined reference to `QSqlQuery::QSqlQuery(QSqlDatabase)'
sqlite3.cpp:(.text+0x1b28): undefined reference to `QSqlDatabase::~QSqlDatabase()'
sqlite3.cpp:(.text+0x1b35): undefined reference to `QSqlQuery::setForwardOnly(bool)'
sqlite3.cpp:(.text+0x1b40): undefined reference to `QSqlQuery::prepare(QString const&)'
sqlite3.cpp:(.text+0x1b48): undefined reference to `QSqlQuery::exec()'
sqlite3.cpp:(.text+0x1b5c): undefined reference to `QSqlQuery::~QSqlQuery()'
sqlite3.cpp:(.text+0x1c23): undefined reference to `QSqlQuery::~QSqlQuery()'
sqlite3.cpp:(.text+0x1c38): undefined reference to `QSqlDatabase::~QSqlDatabase()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `mapbox::sqlite::Statement::reset()':
sqlite3.cpp:(.text+0x1184): undefined reference to `QSqlQuery::finish()'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `void mapbox::sqlite::Statement::bind<long>(int, long)':
sqlite3.cpp:(.text._ZN6mapbox6sqlite9Statement4bindIlEEviT_[_ZN6mapbox6sqlite9Statement4bindIlEEviT_]+0x3f): undefined reference to `QSqlQuery::bindValue(int, QVariant const&, QFlags<QSql::ParamTypeFlag>)'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `bool mapbox::sqlite::Statement::get<bool>(int)':
sqlite3.cpp:(.text._ZN6mapbox6sqlite9Statement3getIbEET_i[_ZN6mapbox6sqlite9Statement3getIbEET_i]+0x17): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `int mapbox::sqlite::Statement::get<int>(int)':
sqlite3.cpp:(.text._ZN6mapbox6sqlite9Statement3getIiEET_i[_ZN6mapbox6sqlite9Statement3getIiEET_i]+0x17): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `long mapbox::sqlite::Statement::get<long>(int)':
sqlite3.cpp:(.text._ZN6mapbox6sqlite9Statement3getIlEET_i[_ZN6mapbox6sqlite9Statement3getIlEET_i]+0x17): undefined reference to `QSqlQuery::value(int) const'
../../pkg-mapbox-gl-native/build/libqmapboxgl.a(sqlite3.o): In function `double mapbox::sqlite::Statement::get<double>(int)':
sqlite3.cpp:(.text._ZN6mapbox6sqlite9Statement3getIdEET_i[_ZN6mapbox6sqlite9Statement3getIdEET_i]+0x17): undefined reference to `QSqlQuery::value(int) const'
collect2: error: ld returned 1 exit status
make: *** [Makefile:193: mapbox-qml] Error 1
01:28:35: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project mapbox-qml (kit: Fedora Qt 5)
The kit Fedora Qt 5 has configuration issues which might be the root cause for this problem.
When executing step "Make"
01:28:35: Elapsed time: 00:01.
I have both github repositories checked out in the same folders, so I've changed the paths in the .pro file (hopefully) accordingly:

Code:
INCLUDEPATH += ../../pkg-mapbox-gl-native/mapbox-gl-native/platform/qt/include ../../pkg-mapbox-gl-native/mapbox-gl-native/include
LIBS += -L ../../pkg-mapbox-gl-native/build -lqmapboxgl -lz
If I understand it correctly it fails during linking so maybe my mapbox-native-gl is compiled incorrectly or something ? It seem to compile without issues though during the earlier steps.
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader

Thanks to everyone who voted for modRana & Mieru in the Maemo.org coding competition !
 
Posts: 302 | Thanked: 1,339 times | Joined on Aug 2016 @ Estonia
#104
Originally Posted by MartinK View Post
Got as far as this but it's wont compile, complaining about some sqlite3.cpp errors

...

If I understand it correctly it fails during linking so maybe my mapbox-native-gl is compiled incorrectly or something ? It seem to compile without issues though during the earlier steps.
Its my mistake. On desktop, I have older qmapboxgl compilation which is shared lib - so it pulls all required libs automatically. Later, I switched to static builds of qmapboxgl on SFOS. In the app, I didn't correct the linked libs.

I'll fix it properly later today. Until that, just add missing Qt modules in https://github.com/rinigus/mapbox-gl...box-qml.pro#L3 (compare with https://github.com/rinigus/mapbox-gl...-gl-qml.pro#L3). So, as far as I can see, we are missing

Code:
network gui sql
I'll also make separate MouseArea.qml at https://github.com/rinigus/mapbox-gl...ree/master/app for your hacking pleasure later today.
 
Posts: 302 | Thanked: 1,339 times | Joined on Aug 2016 @ Estonia
#105
@MartinK, try again with the new .pro file. I also changed the path for the library in this file, hopefully it would fit better now.

I do wonder whether I am supposed to start a new thread under development since we probably are out of the brainstorm phase by now. Or anyone interested can find the information here as well?

One more question on mouse area: do we make

* a "universal" one which would expose via signals on whether it was clicked, double clicked, press-and-hold at some coordinate.

or

* provide it as a template that anyone can fit into the project and process the signals as they wish.

For example, at present, double click is routed to centering on current position in Poor Maps and increasing zoom level in modRana. I am personally fine with the both ways, its probably up to the map app authors to state the preference.

If we go for the universal mouse area interaction, do we call it MapboxMapMouseArea?
 
Posts: 1,385 | Thanked: 6,321 times | Joined on Apr 2010 @ Czech Republic
#106
Originally Posted by rinigus View Post
@MartinK, try again with the new .pro file. I also changed the path for the library in this file, hopefully it would fit better now.
Got it working now (just the app for now, have not yet looked at installing the QML plugin and using it separately) - thanks a lot! And it all really looks gorgeous!

Originally Posted by rinigus View Post
I do wonder whether I am supposed to start a new thread under development since we probably are out of the brainstorm phase by now. Or anyone interested can find the information here as well?

One more question on mouse area: do we make

* a "universal" one which would expose via signals on whether it was clicked, double clicked, press-and-hold at some coordinate.

or

* provide it as a template that anyone can fit into the project and process the signals as they wish.
I think can we can easily achieve both - a "signal" based area available under the right license (likely BSD/MIT in this case) can easily be used as a black box via it's API or included as a customized part of application code if needed.

Originally Posted by rinigus View Post
For example, at present, double click is routed to centering on current position in Poor Maps and increasing zoom level in modRana. I am personally fine with the both ways, its probably up to the map app authors to state the preference.
Yeah - and it's not just differences, but I can imagine cases where you might want to block some of the signals outright (eq. in navigation mode, etc.). It's easy to do if it's your application code sitting between the area and the widgets, forwarding the signals or not, based on current application state.

But I guess for simpler applications (let's say a location view in a Twitter client) an all in one pre-configured element might also be welcome. It would be basically a Mapbox map view with the area on top, with signals connected to respective map view APIs in a generic way, so that pinch zoom, panning, & flicking work out of the box without the need for application side configuration. This could likely be left for later on though.

Originally Posted by rinigus View Post
If we go for the universal mouse area interaction, do we call it MapboxMapMouseArea?
Would it be actually Mapbox specific ? If not, it might be just called MapMouseArea/MapTouchArea/MapGestureArea/MapManipulationArea/etc. And maybe people might even use it for stuff not directly related to map manipulation.
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader

Thanks to everyone who voted for modRana & Mieru in the Maemo.org coding competition !
 

The Following 4 Users Say Thank You to MartinK For This Useful Post:
otsaloma's Avatar
Posts: 92 | Thanked: 1,142 times | Joined on May 2011 @ Finland
#107
Originally Posted by rinigus View Post
One more question on mouse area: do we make
I think you should put as much as possible of the mouse/gesture stuff into your module, so that usual things would work out of the box and we'd avoid duplicating code in each app. As an app author, I'd expect to decide myself what a double-tap results in, but implementing should be as easy as defining "onDoubleClick", where I have access to both pixel and geographic coordinates. I assume those who want to do full custom things can just use MapboxMap without MapboxMapMouseArea, right? Maybe you can also support disabling individual events, similar to acceptedGestures?
 

The Following 4 Users Say Thank You to otsaloma For This Useful Post:
Posts: 302 | Thanked: 1,339 times | Joined on Aug 2016 @ Estonia
#108
MartinK and otsaloma: thank you for the feedback! We can surely write up a universal gesture area and make it similar (in some extent) to the one used by QtLocation.

As for the area, yes, it will be somewhat Mapbox GL specific due to use of pan and zoom functions.

In practice, I was thinking to have internal processing of pan, zoom (pinch and wheel) and expose

onClicked
onDoubleClicked
onPressAndHold

These signals will return pixel position, aka regular mouse area signals. If user wishes, all of them can be resolved into geocoordinates as specified by acceptedGestures(?) and would return geocoordinate as well as its sensitivity (lat/lon degrees per pixel):

onClickedGeo
onDoubleClickedGeo
onPressAndHoldGeo

Resolving coordinates takes time (signal to and back from mapboxgl) and is not always required.

I presume that such widget should satisfy our needs. When needed, we can always extend. Or am I forgetting about some signal?
 

The Following User Says Thank You to rinigus For This Useful Post:
Posts: 302 | Thanked: 1,339 times | Joined on Aug 2016 @ Estonia
#109
I have some feedback from Mapbox GL authors regarding J1 crashes. It was suggested to test with a very simple theme that just shows country borders on red background. Would J1 and Photon Q users test the last version of the demo app:

https://build.merproject.org/package...pbox-demo-sfos , choose your architecture, get build RPM

Please let me know whether the black box on the top left is still there and if you can make it crash.

@WebLyfe, for some unknown reason your message disappeared from the thread. Which link did you try? To get RPM, you have to go https://build.merproject.org/package...s/mapboxgl-qml, click on Repositories, choose the architecture and get RPM.
 

The Following User Says Thank You to rinigus For This Useful Post:
Posts: 223 | Thanked: 921 times | Joined on Oct 2013 @ France
#110
Originally Posted by rinigus View Post
I have some feedback from Mapbox GL authors regarding J1 crashes. It was suggested to test with a very simple theme that just shows country borders on red background. Would J1 and Photon Q users test the last version of the demo app:
Good ! That is indeed a good idea to test the limits of the Jolla.

However, I was able to run it before, but can't with the version.
As I couldn't make sense of it, I first rebooted, then seeing nothing changed removed it, and reinstalled it:
Code:
[nemo@Sailfish ~]$ pkcon install mapbox-sfos mapbox-sfos-debuginfo mapbox-sfos-debugsource
Doing so, the latest version from today is installed (20171009164303) :
Code:
[nemo@Sailfish ~]$ pkcon search name mapbox          
Searching by name                                                                                                                                                                                                 
Waiting in queue                                                                                                                                                                                                  
Starting                                                                                                                                                                                                           
Refreshing software list                                                                                                                                                                                          
Querying                                                                                                                                                                                                           
Installed   	mapbox-sfos-0.1+master.20171009164303.d09e6cb-10.15.1.jolla.armv7hl	Mapbox GL test
Installed   	mapbox-sfos-debuginfo-0.1+master.20171009164303.d09e6cb-10.15.1.jolla.armv7hl	Debug information for package mapbox-sfos
Installed   	mapbox-sfos-debugsource-0.1+master.20171009164303.d09e6cb-10.15.1.jolla.armv7hl	Debug sources for package mapbox-sfos
Available   	mapboxgl-qml-1.0.0+master.20171008193555.041251f-10.17.1.jolla.armv7hl	Mapbox GL Native QML plugin
Available   	mapboxgl-qml-debuginfo-1.0.0+master.20171008193555.041251f-10.17.1.jolla.armv7hl	Debug information for package mapboxgl-qml
Available   	mapboxgl-qml-debugsource-1.0.0+master.20171008193555.041251f-10.17.1.jolla.armv7hl	Debug sources for package mapboxgl-qml
Available   	qmapboxgl-1.1.0+master.20171008181234.42fd177-10.11.1.jolla.armv7hl	Mapbox GL Native Qt version
Available   	qmapboxgl-debugsource-1.1.0+master.20171008181234.42fd177-10.11.1.jolla.armv7hl	Debug sources for package qmapboxgl
Launching it from my computer through ssh give the following output (first 3 lines same as usual, except the segfault never appeared before displaying the app):
Code:
[nemo@Sailfish ~]$ time mapbox-sfos 
[D] unknown:0 - Using Wayland-EGL
[W] unknown:0 - Could not find any zN.M subdirs!
[W] unknown:0 - Theme dir "/usr/share/themes/jolla-ambient/meegotouch/z1.0/" does not exist
Segmentation fault

real	0m1.358s
user	0m1.230s
sys	0m0.210s
I ran it through the commande "time" in this example to show that it crashes before having time to interact with the app. I don't even see it on the home-screen. Result is the same on device, but easier to copy/paste here from the computer with SSH.


Diging with gdb:
Code:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x464b5390 (LWP 3920)]
0x2a3b84fc in QQuickItemMapboxGL::staticMetaObject ()
(gdb) bt full
#0  0x2a3b84fc in QQuickItemMapboxGL::staticMetaObject ()
No symbol table info available.
#1  0x2a1ac6a6 in mbgl::gl::Context::createVertexBuffer(void const*, unsigned int, mbgl::gl::BufferUsage) ()
No symbol table info available.
#2  0x2a1bfeba in mbgl::RenderStaticData::RenderStaticData(mbgl::gl::Context&, float, std::experimental::fundamentals_v1::optional<std::string> const&) ()
No symbol table info available.
#3  0x2a0eb914 in mbgl::Renderer::Impl::render(mbgl::UpdateParameters const&) ()
No symbol table info available.
#4  0x2a0de5fa in QMapboxGLRendererFrontend::render() ()
No symbol table info available.
#5  0x2a088364 in QSGMapboxGLTextureNode::render (this=this@entry=0x44e19248, window=0x2a3e4308) at mapbox-gl-qml/src/qsgmapboxglnode.cpp:111
        loaded = false
        alignment = 4
#6  0x2a082216 in QQuickItemMapboxGL::updatePaintNode (this=0x2a4d8270, node=<optimized out>) at mapbox-gl-qml/src/qquickitemmapboxgl.cpp:769
        n = 0x44e19248
        sz = {wd = 540, ht = 960}
        map = 0x44e25208
        loaded = <optimized out>
        tol = <optimized out>
#7  0x401fc970 in QQuickWindowPrivate::updateDirtyNode(QQuickItem*) () from /usr/lib/libQt5Quick.so.5
No symbol table info available.
#8  0x44e34ce0 in ?? ()
No symbol table info available.
#9  0x44e34ce0 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
And dmesg reports the following (To filter as much as possible, I launch on a single line "dmesg; mapbox-sfos; dmesg", to be sure not much other events can append between the time I launch the app, and get the trace):
Code:
[ 1213.066503] dbus-daemon(877) send signal 9 to dbus-daemon(5056)
[ 1213.178421] dbus-daemon(877) send signal 9 to dbus-daemon(5063)
[ 1213.327269] QSGRenderThread: unhandled page fault (11) at 0x4043a4fc, code 0x8000000f
[ 1213.327300] pgd = d3360000
[ 1213.327330] [4043a4fc] *pgd=9f88e831, *pte=b7c4b75f, *ppte=b7c4bc7f

[ 1213.327361] Pid: 5070, comm:      QSGRenderThread
[ 1213.327391] CPU: 1    Tainted: P        W  O  (3.4.108.20161101.1 #1)
[ 1213.327422] PC is at 0x4043a4fc
[ 1213.327422] LR is at 0x4022e6a7
[ 1213.327452] pc : [<4043a4fc>]    lr : [<4022e6a7>]    psr: 20010010
               sp : 4792f768  ip : 4792f7fc  fp : 46030504
[ 1213.327483] r10: 00000001  r9 : 460300c8  r8 : 00000010
[ 1213.327513] r7 : 00000000  r6 : 460281c8  r5 : 46030504  r4 : 460300c8
[ 1213.327513] r3 : 00000010  r2 : 460281c8  r1 : 4792f76c  r0 : 00000001
[ 1213.327544] Flags: nzCv  IRQs on  FIQs on  Mode USER_32  ISA ARM  Segment user
[ 1213.327574] Control: 10c5787d  Table: 9356006a  DAC: 00000015
[ 1213.327605] [<c010b73c>] (unwind_backtrace+0x0/0x118) from [<c010f658>] (__do_user_fault+0x6c/0xb4)
[ 1213.327666] [<c010f658>] (__do_user_fault+0x6c/0xb4) from [<c08a3364>] (do_page_fault+0x358/0x3e8)
[ 1213.327697] [<c08a3364>] (do_page_fault+0x358/0x3e8) from [<c01003a0>] (do_PrefetchAbort+0x34/0x98)
[ 1213.327727] [<c01003a0>] (do_PrefetchAbort+0x34/0x98) from [<c08a1e14>] (ret_from_exception+0x0/0x10)
[ 1213.327758] Exception stack(0xd7bd5fb0 to 0xd7bd5ff8)
[ 1213.327758] 5fa0:                                     00000001 4792f76c 460281c8 00000010
[ 1213.327788] 5fc0: 460300c8 46030504 460281c8 00000000 00000010 460300c8 00000001 46030504
[ 1213.327819] 5fe0: 4792f7fc 4792f768 4022e6a7 4043a4fc 20010010 ffffffff
[ 1213.327849] QSGRenderThread(5049) send signal 11 to QSGRenderThread(5049)
So that is not what I would have expected (window showing with the simplified map, and only then crashing or not after user input).

What could have changed since the older version on which we found the crash on J1 that could explain this ?

I also found strange that the repo shows differents architectures in its name : " sailfish_latest_armv7hl (armv8el) " (from https://build.merproject.org/project...e:rinigus:maps).
Jolla1 is an armv7l as shown by uname:
Code:
[nemo@Sailfish ~]$ uname -a
Linux Sailfish 3.4.108.20161101.1 #1 SMP PREEMPT Fri Jan 13 19:52:23 UTC 2017 armv7l armv7l armv7l GNU/Linux
But it looks like it is still compiled with the same ABI as others programs (except the SYS in system programs, whereas it is GNU/Linux in harbour programs...), and it take some time for it to crash so probably not related:
Code:
[nemo@Sailfish ~]$ file /usr/bin/mapbox-sfos
/usr/bin/mapbox-sfos: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xeb52e8e722b03018b9eb54bfae5e1f8075cd0b1c, stripped
[nemo@Sailfish ~]$ file /usr/bin/harbour-osmscout-server
/usr/bin/harbour-osmscout-server: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x80681b84d5766bad516af8bcd83013f9094096f1, stripped
[nemo@Sailfish ~]$ file /usr/bin/harbour-webpirate      
/usr/bin/harbour-webpirate: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x6ec0ffe927ef023defe31fde5a5d59e97aa95df7, stripped
[nemo@Sailfish ~]$ file /usr/bin/gdb
/usr/bin/gdb: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x927abc6ea716799bbd25629812c19be76980df95, stripped
[nemo@Sailfish ~]$ file /usr/bin/git
/usr/bin/git: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x4226c108af6ade5d5163e4512d28a4d8e7cb3fb3, stripped
[nemo@Sailfish ~]$ file /usr/bin/file
/usr/bin/file: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x765abfa4940d6d8e5dd0be6cf14159e8d40ed616, stripped
Do you seen something in those trace I would have missed ?
As before, I can test any other thing, if anyone have ideas of additional commands/traces that could help.
I also tried to describe as much as possible the steps I did if someone else want to compare with its J1 to check that this problem would not be only on my phone.
 

The Following 2 Users Say Thank You to Zeta For This Useful Post:
Reply

Thread Tools

 
Forum Jump


All times are GMT. The time now is 01:46.