Elixir can't read files in Virtualbox shared folder

I use Vagrant/Virtualbox for my development environments.

After upgrading to Elixir 1.9.1 / Erlang 22, Elixir cannot seem to read any files exposed to my Virtualbox VM from the host via the shared folder functionality. In the below example, /var/local/git/poof is a directory exposed as a shared folder in my VM, and /var/local/git/poof-test is a directory created directly on the local filesystem of the VM:

[root:/var/local/git/poof-test] # cat foo.txt 
bar
[root:/var/local/git/poof-test] # iex
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]

Interactive Elixir (1.9.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> File.read("foo.txt")
{:ok, "bar\n"}

[root:/var/local/git/poof-test] # cd ../poof
[root:/var/local/git/poof] # cat foo.txt 
bar
[root:/var/local/git/poof] # iex
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]

Interactive Elixir (1.9.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> File.read("foo.txt")
{:error, :efault}

It’s looking like this goes deeper than Elixir, as Erlang throws the same error:

^C⌁ [root@poof.stirlab.local:/var/local/git/poof] # erl
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]

Eshell V10.4.4  (abort with ^G)
1> {ok, File} = file:read_file("foo.txt").       
** exception error: no match of right hand side value {error,efault}

As the ‘cat’ calls above show, there’s no issue with reading the actual file. I’ve also tested reading the file via both Node and Python, and it works perfectly.

I’m stumped how to proceed, would love some suggestions!

As a sanity check, I blew away my development VM and completely rebuilt it, same problem as before…

I’d take a guess that your effective userid is not root, as it is in shell. Test in iex:

:os.cmd(‘id -u’) # yes single quotes

I rolled the dice and did a complete system upgrade from Debian Jessie to Debian Stretch, and this seems to have fixed the issue.

No idea why, but I don’t think it’s worth exploring at this point!