Hmm. I just checked on 12.04 - 17.04 i386, 12.04 - 17.10 amd64 and series 16 Ubuntu Core armhf (rpi2) and none of these need ‘m’ when using method 2.
I think you should strace this process so we can better understand what the application is doing. I suggest something along the lines of:
$ strace -D -f -vv -e 'open,mmap,mmap2' /path/to/thing/getting/denied
For example, when I run the above:
$ strace -D -f -vv -e 'open,mmap,mmap2' ./anon_mmap
strace: Process 30895 attached
open("/dev/zero", O_RDWR) = 3
mmap(NULL, 4, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0x7fdd567e7000