How this error could be explained?
It was about a week for me to try to install mapnik. I finally found the manual bellow.
It brought me as far as installing apache on one of the two boxes were I am trying to set it up.
Second box could not even get mod-tiles built.
But here I am stuck when trying to call renderd from a command line (does not work from httpd either). This box is relatively weak. Has 512MB ram and I use it as it is easy to respawn it clean. Second box I have is very powerful (16GB of RAM) but there I stuck with (mapnik/box2d.hpp: No such file or directory error when building mod-tiles).
https://switch2osm.org/manually-building-a-tile-server-16-04-2-lts/
renderd -f -c /usr/local/etc/renderd.conf
renderd[7931]: Rendering daemon started
renderd[7931]: Initiating request_queue
renderd[7931]: Parsing section renderd
renderd[7931]: Parsing render section 0
renderd[7931]: Parsing section mapnik
renderd[7931]: Parsing section ajt
renderd[7931]: config renderd: unix socketname=/var/run/renderd/renderd.sock
renderd[7931]: config renderd: num_threads=4
renderd[7931]: config renderd: num_slaves=0
renderd[7931]: config renderd: tile_dir=/mapnik/mod_tile
renderd[7931]: config renderd: stats_file=/var/run/renderd/renderd.stats
renderd[7931]: config mapnik: plugins_dir=/usr/lib/mapnik/3.0/input
renderd[7931]: config mapnik: font_dir=/usr/share/fonts/truetype
renderd[7931]: config mapnik: font_dir_recurse=1
renderd[7931]: config renderd(0): Active
renderd[7931]: config renderd(0): unix socketname=/var/run/renderd/renderd.sock
renderd[7931]: config renderd(0): num_threads=4
renderd[7931]: config renderd(0): tile_dir=/mapnik/mod_tile
renderd[7931]: config renderd(0): stats_file=/var/run/renderd/renderd.stats
renderd[7931]: config map 0: name(ajt) file(/mapnik/mapnik.xml) uri(/hot/) htcp() host(localhost)
renderd[7931]: Initialising unix server socket on /var/run/renderd/renderd.sock
renderd[7931]: Created server socket 5
renderd[7931]: Renderd is using mapnik version 3.1.0
[1] 7931 segmentation fault (core dumped) renderd -f -c /usr/local/etc/renderd.con
asked
27 Nov '17, 23:08
Oblomingo
11●1●1●2
accept rate:
0%
"segmentation fault (core dumped)" just means "something went wrong". Without more information about how you got to that position it's difficult to say anything more helpful.
What OS and what version are you running on each box?
What did you install on each and in what order?
In particular, what comments did you type in what order to get the "mapnik/box2d.hpp: No such file or directory error" error?
May I ask to ignore "mapnik/box2d.hpp". This is related to a different server. Here I am getting only one error 7931 segmentation fault
It happens when I run the following command
renderd -f -c /usr/local/etc/renderd.conf
Content of the file
[renderd] num_threads=1 tile_dir=/mapnik/mod_tile stats_file=/mapnik/renderd.stats
[mapnik] plugins_dir=/usr/lib/mapnik/3.0/input font_dir=/usr/share/fonts/truetype font_dir_recurse=1
[ajt] URI=/hot/ TILEDIR=/mapnik/mod_tile XML=/home/stan/src/openstreetmap-carto/mapnik.xml HOST=localhost TILESIZE=256 MAXZOOM=20
Running it on Ubuntu 16.04.3 LTS
Does this renderd has any kind of traditional log where it reports details of what it is doing. I can see something is printed to console but as you noticed it is not enough to get to the root of the problem.
Thank you btw for looking into it.
Yes, when run that way it should output to stdout, but it's falling over before it got a chance.
It seems odd that (for example) you've got things pointing at "/mapnik/" rather than "/var/lib"? Also it's odd that you're telling it "num_threads=1" yet it starts 4, and uses a different stats file.
It's a long time since I've tried to render tiles on something with as little memory as 512Mb, but I have done it in the past (albeit with older versions of everything).
Where did the mapnik you're using come from? https://switch2osm.org/manually-building-a-tile-server-16-04-2-lts/ fetches it via apt-get, and when I restart renderd here I see "Renderd is using mapnik version 3.0.9" rather than 3.1.0. Are you perhaps trying to use a self-built mapnik version?
I've never had a lot of success with that: https://github.com/mapnik/mapnik/issues/3462 :)
You can try to use "locate libmapnik" - your self built version would be probably somewhere in the /usr/local.
I traced libmapnik down and uninstalled it. So now version 3.0.9 is reported in the log file. However result is the same - segmentation fails.
BOX 512MB renderd[26381]: Renderd is using mapnik version 3.0.9 [1] 26380 segmentation fault (core dumped) sudo -u renderaccount renderd -f -c /usr/local/etc/renderd.conf
I tried doing the same on the more powerful box where mapnik was built from source and error is the same. Problem seems to be not related to hardware available as box with 512MB memory is failing the same way as box with 16GB
BOX 16GB renderd[22083]: Initialising unix server socket on /var/run/renderd/renderd.sock renderd[22083]: Created server socket 5 renderd[22083]: Renderd is using mapnik version 3.1.0 [1] 22083 segmentation fault (core dumped) renderd -f -c /usr/local/etc/renderd.conf
It seems to fail because of this line
plugins_dir=/usr/lib/mapnik/3.0/input
without this line it starts but later complain that plugin dir is not set. However there is no segmentation error. Content of the folder seems to be correct
-rwxrwxrwx 1 renderaccount renderaccount 619K Dec 3 2015 topojson.input -rwxrwxrwx 1 renderaccount renderaccount 148K Dec 3 2015 sqlite.input -rwxrwxrwx 1 renderaccount renderaccount 171K Dec 3 2015 shape.input -rwxrwxrwx 1 renderaccount renderaccount 159K Dec 3 2015 raster.input -rwxrwxrwx 1 renderaccount renderaccount 248K Dec 3 2015 postgis.input -rwxrwxrwx 1 renderaccount renderaccount 191K Dec 3 2015 pgraster.input -rwxrwxrwx 1 renderaccount renderaccount 135K Dec 3 2015 ogr.input -rwxrwxrwx 1 renderaccount renderaccount 755K Dec 3 2015 geojson.input -rwxrwxrwx 1 renderaccount renderaccount 71K Dec 3 2015 gdal.input -rwxrwxrwx 1 renderaccount renderaccount 664K Dec 3 2015 csv.input
If you can reproduce the problem (perhaps in a virtual machine installed under VirtualBox running on the larger machine) using an "off the shelf" copy of 16.04 LTS then people will have a chance of being able to investigate it. Until then all we can say that there's something different about your systems that's causing the problems, and only you have access there.
I last ran through the "switch2osm" page on 22/10/2017 and at that time "it just worked". Obviously new versions of software come out all the time and something might have broken, but I'm guessing that it's actually related to your previous self-build of mapnik and python-mapnik.
I run command mapnik-config --input-plugins It gave me a different directory /usr/local/lib/mapnik/input I changed renderd.conf plugins_dir=/usr/local/lib/mapnik/input and it started working
At least fixed one box. Second box (the one with 512MB memory does not work no matter how renderd.conf looks like - but ok. at least something works)
Finally I got a second box running.
Solution was
Increased memory to 1GB
Built mapnik 3.1 (and python bindings) from source (map available in ubuntu repo (version 3.0.9) did not work on neither boxes I tried)
Was very hard to build mod_tiles with mapnik version 3.1. It was trying to use some artifacts left after mapnik build and build was failing with bizarre messages as it was not what it expexted. So I had to delete some of the mapnik build artifacts in order to make mod_tiles succeed.
At the end got everything working. May be if I tried from a clean slate then "switch2osm" way would also work but I give it a serious doubt. Both boxes I have only worked on mapnik build from source
Good that you got it working, but in both cases you'd half-built-from source first, so you likely had a mixture of stuff lying around.
It might be useful if you could explain what you actually did rather than just say e.g. "So I had to delete some of the mapnik build artifacts" - that doesn't help anyone who's trying to do it in the future.
May be. But in one case I have deleted (uninstall) source build mapnik alltogether and made sure I had only ubuntu supplied version left (3.0.9) and it did not work (segmentation error)
when I was trying to build mod_tiles it was complaining that it could not find jpeg turbo lib referring some unusual path /home/travis/.. (travis is not a user on this server)
mod_tile libtool: error: cannot find the library '/home/travis/build/mapbox/mason/mason_packages/linux-x86_64/jpeg_turbo/1.5.1/lib/libjpeg.la'
It also was giving warning that some libs were moved. I could not reproduce it anymore.
I decided to delete mason_packages folder and as strange it was - it helped
rm -rf /home/myuser/src/mapnik/mason_packages/
After I deleted it mod_tiles was successfully built and rendering starts working