renderd socket problem

Hi,

I’m trying to run a local tile server with the Ubuntu packages.
I have no tile generated.

The daemon is crashing when I try to run render_list -a, so I tried to see if renderd was working properly.


$sudo service renderd stop
 * Stopping Mapnik rendering daemon renderd                                                                [ OK ] 
$ renderd -f
Error opening file for reading: Permission denied
renderd[27132]: Rendering daemon started
renderd[27132]: Parsing section renderd
renderd[27132]: Parsing render section 0
renderd[27132]: Parsing section mapnik
renderd[27132]: Parsing section default
renderd[27132]: config renderd: unix socketname=/var/run/renderd/renderd.sock
renderd[27132]: config renderd: num_threads=4
renderd[27132]: config renderd: num_slaves=0
renderd[27132]: config renderd: tile_dir=/var/lib/mod_tile
renderd[27132]: config renderd: stats_file=/var/run/renderd/renderd.stats
renderd[27132]: config mapnik:  plugins_dir=/usr/lib/mapnik/2.0/input
renderd[27132]: config mapnik:  font_dir=/usr/share/fonts/truetype/ttf-dejavu
renderd[27132]: config mapnik:  font_dir_recurse=0
renderd[27132]: config renderd(0): Active
renderd[27132]: config renderd(0): unix socketname=/var/run/renderd/renderd.sock
renderd[27132]: config renderd(0): num_threads=4
renderd[27132]: config renderd(0): tile_dir=/var/lib/mod_tile
renderd[27132]: config renderd(0): stats_file=/var/run/renderd/renderd.stats
renderd[27132]: config map 0:   name(default) file(/etc/mapnik-osm-data/osm.xml) uri(/osm/) htcp() host(localhost)
renderd[27132]: Initialising unix server socket on /var/run/renderd/renderd.sock
renderd[27132]: Created server socket 4
renderd[27132]: Renderd is using mapnik version 2.0.0
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-BoldItalic.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldItalic.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Bold.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-BoldOblique.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Oblique.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Bold.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Italic.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-ExtraLight.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
renderd[27132]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Italic.ttf
Running in foreground mode...
renderd[27132]: Starting stats thread

I wondered what the error was so I straced the system calls and found two things:


13:39:40.970402 execve("/usr/bin/renderd", ["renderd", "-f"], [/* 52 vars */]) = 0
13:39:40.971387 brk(0)                  = 0x9539000
13:39:40.971577 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
13:39:40.971730 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7734000
13:39:40.971850 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)

So I guess the IO error comes from /etc/ld.so.nohwcap or /etc/ld.so.preload. Is this a problem ?

In the end I also have a socket error:


13:39:41.032728 writev(2, [{"renderd[27849]: Initialising uni"..., 80}, {"\n", 1}], 2renderd[27849]: Initialising unix server socket on /var/run/renderd/renderd.sock
) = 81
13:39:41.032851 send(4, "<30>Dec  2 13:39:41 renderd[2784"..., 100, MSG_NOSIGNAL) = 100
13:39:41.032984 socket(PF_FILE, SOCK_STREAM, 0) = 5
13:39:41.033100 unlink("/var/run/renderd/renderd.sock") = -1 EACCES (Permission denied)
13:39:41.033219 umask(0)                = 02
13:39:41.033305 bind(5, {sa_family=AF_FILE, path="/var/run/renderd/renderd.sock"}, 110) = -1 EADDRINUSE (Address already in use)
13:39:41.033496 write(2, "socket bind failed for: /var/run"..., 54socket bind failed for: /var/run/renderd/renderd.sock
) = 54
13:39:41.033609 close(5)                = 0
13:39:41.034087 exit_group(3)           = ?
[/code]
File exists and seems to be valid:

$ls -al /var/run/renderd/renderd*
srwxrwxrwx 1 www-data www-data 0 déc. 2 13:56 /var/run/renderd/renderd.sock
-rw-r–r-- 1 www-data www-data 928 déc. 2 13:56 /var/run/renderd/renderd.stats
$ file /var/run/renderd/renderd.sock
/var/run/renderd/renderd.sock: socket



What could possibly cause this and how to solve it?

Found it…
It was a problem in the rights of the directory.

I just:
sudo chmod a+x /var/run/rendered/

render -f starts ok but if I try render_list there is a problem:


[pid  8003] 18:24:06.899006 socket(PF_FILE, SOCK_STREAM, 0) = 3
[pid  8003] 18:24:06.899126 connect(3, {sa_family=AF_FILE, path="/var/run/renderd/renderd.sock"}, 110) = -1 ECONNREFUSED (Connection refused)
[pid  8003] 18:24:06.899352 write(2, "socket connect failed for: /var/"..., 57socket connect failed for: /var/run/renderd/renderd.sock
) = 57

If I launch the service, render_list starts ok.
But the service eventually crashes:

$ render_list -a -z 0 -Z 9 -f -t /var/lib/mod_tile -s /var/run/renderd/renderd.sock 
Rendering client
Planet file updated at Sat Dec  1 20:24:33 2012
Starting 1 rendering threads
Rendering all tiles from zoom 0 to zoom 9
Rendering all tiles for zoom 0 from (0, 0) to (0, 0)
Rendering all tiles for zoom 1 from (0, 0) to (1, 1)
Rendering all tiles for zoom 2 from (0, 0) to (3, 3)
Requesting xml(default) x(0) y(0) z(0)
Rendering all tiles for zoom 3 from (0, 0) to (7, 7)
Rendering all tiles for zoom 4 from (0, 0) to (15, 15)
Rendering all tiles for zoom 5 from (0, 0) to (31, 31)
Rendering all tiles for zoom 6 from (0, 0) to (63, 63)
Requesting xml(default) x(0) y(0) z(1)
Requesting xml(default) x(0) y(0) z(2)
recv error: Success
Requesting xml(default) x(0) y(0) z(3)

I stopped the service and debugged with rendered -v.

render_list gives:


$ render_list -a -z 0 -Z 5 -f -t /var/lib/mod_tile -s /var/run/renderd/renderd.sock
Rendering client
Planet file updated at Sat Dec  1 20:24:33 2012
Starting 1 rendering threads
Rendering all tiles from zoom 0 to zoom 5
Rendering all tiles for zoom 0 from (0, 0) to (0, 0)
Rendering all tiles for zoom 1 from (0, 0) to (1, 1)
Rendering all tiles for zoom 2 from (0, 0) to (3, 3)
Rendering all tiles for zoom 3 from (0, 0) to (7, 7)
Rendering all tiles for zoom 4 from (0, 0) to (15, 15)
Rendering all tiles for zoom 5 from (0, 0) to (31, 31)
Requesting xml(default) x(0) y(0) z(0)
Waiting for rendering threads to finish
Requesting xml(default) x(0) y(0) z(1)
Requesting xml(default) x(0) y(0) z(2)
recv error: Success
Requesting xml(default) x(0) y(0) z(3)

And renderd -f:


...
Running in foreground mode...
renderd[3318]: Starting stats thread
renderd[3318]: DEBUG: Got incoming connection, fd 11, number 1
renderd[3318]: DEBUG: Got command RenderBulk fd(11) xml(default), z(0), x(0), y(0)
renderd[3318]: DEBUG: DONE TILE default 0 0-0 0-0
renderd[3318]: DEBUG: DONE TILE default 0 0-0 0-0 in 2.765 seconds
renderd[3318]: DEBUG: Got command RenderBulk fd(11) xml(default), z(1), x(0), y(0)
renderd[3318]: DEBUG: DONE TILE default 1 0-1 0-1
renderd[3318]: DEBUG: DONE TILE default 1 0-1 0-1 in 2.972 seconds
renderd[3318]: DEBUG: Got command RenderBulk fd(11) xml(default), z(2), x(0), y(0)
terminate called after throwing an instance of 'mapnik::datasource_exception'
  what():  :
ERROR:  function asbinary(geometry) does not exist
LINE 1: SELECT AsBinary("way") AS geom,"name","place" from 
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
Full sql was: 'SELECT AsBinary("way") AS geom,"name","place" from 
      (select way,place,name,ref
       from planet_osm_point
       where place in ('country','state')
      ) as placenames WHERE "way" && SetSRID('BOX3D(-1172928.25 6698449,-570042.3125 7448437.5)'::box3d, 900913)'

Abandon

Not sure but seems like I have a compatibility issue between renderd (0.14-12-recise2) and PostGIS (2.0.1-2~precise2).
I’m having problems to recompile renderd, if anyone has a repo with a good version I’d appreciate.

I think I’ll uninstall some packages and try to recompile…

According to this link http://trac.osgeo.org/postgis/wiki/FAQ#WhenweretheST_functionsfirstaddedtomatchtheSQL-MM-centricconvention AsBinary is deprecated

I can’t find the piece of code where I could try to update…

Think it’s good, I uninstalled any 2.0 package and installed 2…2 package.

I recompiled renderd and mod tile but I had to modify the source as follow:
https://help.openstreetmap.org/questions/16334/error-in-mod_tile-compile-with-centos-63-gcc-446

I have no more errors and directories are created in /var/lib/mod_tiles/ except there are no .png anymore but a few .meta files.

Have to try the server to check if the display is right.

I think you have nameing issue. You have directory

but in configuration you have

rendered <----------> renderd

I had problems with

I am building a bash script to update /etc/renderd.conf and restart mapnik.
I had the same error message "“Error opening file for reading: Permission denied”, but in my case doing “sudo chmod a+x /var/run/rendered/” did not solve the problem. I gave access permissions to every file, doing this solved the issue:

sudo service apache2 restart

when /etc/renderd.conf is updated with new tile server instances such as :

[default]
URI=/OSM/

[default1]
URI=/OSM2/

[default2]
URI=/OSM3/

If apache2 is not restarted then old URIs work partially and “Error opening file for reading: Permission denied” appears when executing “renderd -f”