Any hints and pointers appreciated.
Installed todays osm package updates but that doesn't seem to have helped.
The hopefully relevant part of strace follows:
open("/usr/share/icons/map-icons/classic.small/rendering/cliff.png", O_RDONLY) = 8
fstat64(8, {st_mode=S_IFREG|0644, st_size=26196, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xaf4c5000
read(8, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\0\17\0\0\0\4\10\6\0\0\0Q\21e\211"..., 4096) = 4096
read(8, "\272\"\371\377@\17\372\0:\322\247\336\353\221\2418\347\275\370\20\256?\201\226a\37\271\370\10-tFH"..., 4096) = 4096
read(8, "B]\327a\0b\343zn\273s\244\335D\25D5~\337\17r(|\326\216N\250\264\3\215j\341@"..., 4096) = 4096
read(8, "n\3620H\32\246\336\30]\212\372_\v_\177\206&k\260\307\10d\260x\221\343\353\375\2573{G\220"..., 4096) = 4096
read(8, "\204\361%8\261yF\37c`\214\363}{\25C\10;+@03Ft\257\251\314\213\20\7g\367\202"..., 4096) = 4096
read(8, "\7s\314\354\336j\217\335\352\272\357%Z\215[~_\313\257d\351\326\256\267\244\361\262+\235\234\326\361\364"..., 4096) = 4096
read(8, "M\256Y\327q\246~\341\350[\273\34{\217y\213\274\243\256\362\315y\32\tc\5\310zA\277\247\336\364"..., 4096) = 1620
close(8) = 0
munmap(0xaf4c5000, 4096) = 0
open(".shp", O_RDONLY) = -1 ENOENT (No such file or directory)
close(-1) = -1 EBADF (Bad file descriptor)
futex(0xb7609788, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(2, " got exception ... \n"..., 20 got exception ...
) = 20
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{"\33\30\2\0\0\0\0\0"..., 8}, {NULL, 0}, {""..., 0}], 3) = 8
read(4, 0x9eb9e08, 4096) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{" \30\2\0\0\0\0\0"..., 8}, {NULL, 0}, {""..., 0}], 3) = 8
read(4, 0x9eb9e08, 4096) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{"%\30\1\0+\0\1\0"..., 8}, {NULL, 0}, {""..., 0}], 3) = 8
poll([{fd=4, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\1\2\343\0\0\0\0\0\7\1\0\1\0\0\0\0\4\0\0\0`\240\4\20`\240\4\20\0\0\0\0"..., 4096) = 32
read(4, 0x9eb9e08, 4096) = -1 EAGAIN (Resource temporarily unavailable)
access("/usr/local/bin/gdb", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/bin/gdb", X_OK) = 0
getuid32() = 1000
stat64("/usr/bin/gdb", {st_mode=S_IFREG|0755, st_size=3301728, ...}) = 0
readlink("/proc/self/exe", "/usr/bin/gpsdrive"..., 256) = 17
open("/usr/bin/gpsdrive", O_RDONLY) = 8
lseek(8, 0, SEEK_END) = 514880
mmap2(NULL, 514880, PROT_READ|PROT_WRITE, MAP_PRIVATE, 8, 0) = 0xaf448000
munmap(0xaf448000, 514880) = 0
exit_group(1) = ?
open(".shp", O_RDONLY) = -1 ENOENT (No such file or directory)
the shapefile name seems to have lost all but its extension. Anything obvious which looks like that near the end of ~/.gpsdrive/osm.xml?
is the 300mb world coastline .deb installed?
Hamish
If you mean the openstreetmap-mapnik-world-boundaries, yes version 16662 is installed.
$ grep shp ~/.gpsdrive/osm.xml ## returns nothing
$ grep mapnik ~/.gpsdrive/osm.xml ##returns various hits
$ mv ~/.gpsdrive/osm.xml ~/.gpsdrive/osm.xml.bak
$ strace gpsdrive
[...]
munmap(0xaf421000, 4096) = 0
open(".shp", O_RDONLY) = -1 ENOENT (No such file or directory)
close(-1) = -1 EBADF (Bad file descriptor)
futex(0xb7565788, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(2, " got exception ... \n"..., 20 got exception ...
) = 20
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
OK, after being p*ssed of that it didn't magically fix itself... ;-)
I remembered that I only straced it and didn't gdb it.
I did and was surprised. I found the following:
Program received signal SIGSEGV, Segmentation fault.
0xb765cb5a in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) ()
from /usr/lib/libstdc++.so.6
(gdb) bt
#0 0xb765cb5a in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) ()
from /usr/lib/libstdc++.so.6
#1 0xb3136669 in shape_datasource::shape_datasource(mapnik::parameters const&) () from /usr/lib/mapnik/0.5/input/shape.input
#2 0xb3137517 in create () from /usr/lib/mapnik/0.5/input/shape.input
#3 0xb775890c in mapnik::datasource_cache::create(mapnik::parameters const&) () from /usr/lib/libmapnik.so.0.6
#4 0xb77bd2a2 in mapnik::map_parser::parse_layer(mapnik::Map&, boost::property_tree::basic_ptree<boost::property_tree::ptree_traits<char> > const&) () from /usr/lib/libmapnik.so.0.6
#5 0xb77be75d in mapnik::map_parser::parse_map(mapnik::Map&, boost::property_tree::basic_ptree<boost::property_tree::ptree_traits<char> > const&) () from /usr/lib/libmapnik.so.0.6
#6 0xb77c01cb in mapnik::load_map(mapnik::Map&, std::string const&, bool) () from /usr/lib/libmapnik.so.0.6
#7 0x080ad8a4 in init_mapnik ()
#8 0x0807514b in gui_init ()
#9 0x0806d6a6 in main ()
Please notice that after using libmapnik0.6 all the time suddenly in #2 it uses a file from 0.5.
Long story short:
dpkg --force-depends -r libmapnik0.5
fixes that and gpsdrive starts and works just fine. Just apt-get complains about broken dependencies and wants to reinstall it.
I'm not sure, but I suspect that the dependency rule for libmapnik needs some loving.
Anyone knowledgeable about this? As I don't know this well enough.
Kicking prio up a notch as this is a showstopper.
nice detective work.
the problem is that 0.5 is hardcoded:
src/gpsdrive_config.c
889: g_snprintf(local_config.mapnik_input_path, sizeof(local_config.mapnik_input_path),
890: "%s", "/usr/lib/mapnik/0.5/input/");
Hamish
libmapnik0.5 0.5.1-3
gpsdrive 2.10svn2524
(the latter came through an upgrade today)
Issue still exists. any ideas?
just at the off chance that someone would go as far as reading this ticket...
It still doesn't work, but the message has changed:
dm8tbr@fortinbras:~$ gpsdrive
Speech Dispatcher not available, disabling speech output!
Connection to GPS Daemon on 127.0.0.1:2947 established.
DB: Using waypoints from local user file.
DB: Using street data from Mapnik database.
Read 528 POI-Types from geoinfo.db
got exception ...
got exception ...
got exception ...
got exception ...
gpsdrive: symbol lookup error: /usr/lib/mapnik/0.5/input/postgis.input: undefined symbol: _ZN5boost5mutex7do_lockEv
ok, using google on that new message reveals this:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=527956
did someone forget to port the downstream fix for this very problem? *sigh*