[OSRM-talk] osrm-datastore error code 21

Kieran Caplice kieran.caplice at temetra.com
Mon Jan 29 09:48:21 UTC 2018


Hi Julien/Daniel,

Thanks for the replies. I had read that github issue prior to emailing 
the list, and it did solve the initial error I was having, which was due 
to running osrm-datastore as root and later as user "osrm". Rebooting 
the machine solved this as it did for you, Julien. But after that I'm 
faced with this issue.

@Daniel: /tmp contains the two files:
-rw-rw-r-- 1 osrm  osrm     0 Jan 26 16:34 osrm-datastore.lock
-rw-rw-r-- 1 osrm  osrm     0 Jan 26 16:34 osrm.lock

Output of the strace:

root at htzh /opt/osrm # su - osrm -c "strace osrm-datastore 
/opt/osrm/data/planet-latest/planet-latest.osrm"
...
open("/opt/osrm/data/planet-latest/planet-latest.osrm.tld", O_RDONLY) = 5
read(5, 
"OSRN\5\17\0M\25\17\0\0\0\0\0\0\1\0\3\0\1\1\3\0\1\0\v\0\1\1\v\0"..., 
8191) = 8191
close(5)                                = 0
stat("/opt/osrm/data/planet-latest/planet-latest.osrm.partition", 
0x7ffcde3c8d20) = -1 ENOENT (No such file or directory)
stat("/opt/osrm/data/planet-latest/planet-latest.osrm.cells", 
0x7ffcde3c8d20) = -1 ENOENT (No such file or directory)
stat("/opt/osrm/data/planet-latest/planet-latest.osrm.cell_metrics", 
0x7ffcde3c8d20) = -1 ENOENT (No such file or directory)
stat("/opt/osrm/data/planet-latest/planet-latest.osrm.mldgr", 
0x7ffcde3c8d20) = -1 ENOENT (No such file or directory)
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
write(1, "[info] Allocating shared memory "..., 57[info] Allocating 
shared memory of 96772768369 bytes
) = 57
stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
stat("/tmp/osrm.lock", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
stat("/tmp/osrm.lock", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
shmget(0x10001b9, 96772768369, IPC_CREAT|0644) = -1 EINVAL (Invalid 
argument)
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
write(2, "\33[31m[error] Error while attempt"..., 88[error] Error while 
attempting to allocate shared memory: Invalid argument, code 21) = 88
write(2, "\33[0m", 4)                   = 4
write(2, "\n", 1
)                       = 1
write(2, "terminate called after throwing "..., 48terminate called after 
throwing an instance of ') = 48
...

Can you provide any further insight into what the problem might be?

By the way, we're using the latest release version (v5.15.0) built from 
source on 16.04.

Kind regards,
Kieran Caplice

On 26/01/18 17:48, Julien Coupey wrote:
> Hi,
>
> Not sure if you're hitting the same problem here, but I recall a 
> related discussion happening a while back at:
>
> https://github.com/Project-OSRM/osrm-backend/issues/1724
>
> At least it provides a few hints on permissions and shared memory.
>
> Julien
>
> Le 26/01/2018 à 18:31, Daniel Patterson a écrit :
>> Kieran,
>>
>>    Hmm, we could probably improve the error handling here and make 
>> the message a bit more useful.
>>
>>    The problem is probably one of:
>>
>>      1) Permission problems accessing /tmp/osrm.lock
>>      2) Permission problems creating shared memory
>>
>>    Code 21 is:
>>
>> $ errno 21
>> EISDIR 21 Is a directory
>>
>>    So I'd suspect some bad filesystem permissions somewhere. You can 
>> try running the `osrm-datastore` command under `strace` and see if 
>> you can spot the syscal that's failing with - that might give a hint 
>> as to what's going wrong.
>>
>> daniel
>>
>> On Fri, Jan 26, 2018 at 8:57 AM, Kieran Caplice 
>> <kieran.caplice at temetra.com <mailto:kieran.caplice at temetra.com>> wrote:
>>
>>     Hello,
>>
>>     I'm wondering if anyone can help out with this error I'm getting
>>     when running osrm-datastore under a non-root user:
>>
>>     root at htzh /opt/osrm # su - osrm -c "osrm-datastore
>>     /opt/osrm/data/planet-latest/planet-latest.osrm"
>>     [info] Loading data into REGION_1
>>     [info] load names from:
>>     "/opt/osrm/data/planet-latest/planet-latest.osrm.names"
>>     [info] Allocating shared memory of 96772768369 bytes
>>     [error] Error while attempting to allocate shared memory: Invalid
>>     argument, code 21
>>     terminate called after throwing an instance of 
>> 'osrm::util::exception'
>>        what():  Invalid argumentinclude/storage/shared_memory.hpp:308
>>     root at htzh /opt/osrm # su - osrm -c "ulimit -a | grep max"
>>     max locked memory       (kbytes, -l) 128849018880
>>     max memory size         (kbytes, -m) unlimited
>>     max user processes              (-u) 1031189
>>
>>     Available shared memory for the user has been increased in
>>     /etc/security/limits.conf as per the wiki page, as shown above.
>>
>>     The server has 256GB of RAM, with at least 200GB available most of
>>     the time. I successfully ran osrm-datastore and osrm-routed as the
>>     root user earlier, but we would ideally run it under a separate 
>> user.
>>
>>     Thanks in advance.
>>
>>     Kind regards,
>>     Kieran Caplice
>>
>>
>>     _______________________________________________
>>     OSRM-talk mailing list
>>     OSRM-talk at openstreetmap.org <mailto:OSRM-talk at openstreetmap.org>
>>     https://lists.openstreetmap.org/listinfo/osrm-talk
>>     <https://lists.openstreetmap.org/listinfo/osrm-talk>
>>
>>
>>
>>
>> _______________________________________________
>> OSRM-talk mailing list
>> OSRM-talk at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/osrm-talk
>>
>
> _______________________________________________
> OSRM-talk mailing list
> OSRM-talk at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/osrm-talk




More information about the OSRM-talk mailing list