Bug 217562 - emulators/linux_base-c7: strange path truncating when exec'ing in bash scripts
Summary: emulators/linux_base-c7: strange path truncating when exec'ing in bash scripts
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Tijl Coosemans
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-03-05 14:22 UTC by Matthieu Volat
Modified: 2017-03-06 17:14 UTC (History)
0 users

See Also:
bugzilla: maintainer-feedback? (emulation)


Attachments
Demo script, first file (61 bytes, application/x-sh)
2017-03-05 14:23 UTC, Matthieu Volat
no flags Details
Demo script, secon file (28 bytes, application/x-sh)
2017-03-05 14:23 UTC, Matthieu Volat
no flags Details
Trace file (50.29 KB, application/octet-stream)
2017-03-05 14:24 UTC, Matthieu Volat
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matthieu Volat 2017-03-05 14:22:54 UTC
Hi,

I found a strange issue when running linux's bash scripts:

If you try to exec from a shell script (ran from /compat/linux/bin/bash) into another, the exec'ed script path will be truncated by 8 bytes from the left (and will obviously result in a failure).

Simple demonstrator, file 1 is "test_linux_exec_bash.sh":

  #!/usr/bin/env bash
  echo $0
  exec ./test_linux_exec_bash_2.sh

file 2 is "test_linux_exec_bash_2.sh":

  #!/usr/bin/env bash
  echo $0
  
Then the result:

  % /compat/linux/bin/bash ./test_linux_exec_bash.sh
  ./test_linux_exec_bash.sh
  /compat/linux/usr/bin/env: zhe/tmp/test_linux_exec_bash_2.sh: No such file or directory

This will not happen if the 1st script try to exec into a binary (/compat/linux/usr/bin/env issue??)

I've ran the demo through ktrace, but it revealed nothing really interesting: at some point after execing into env, the path is corrupted... valgrind can't be run on linux binaries, so I did not found anything on that front...

At that point, I'm failing to see what is going wrong here.

Any ideas? Thanks
Comment 1 Matthieu Volat 2017-03-05 14:23:26 UTC
Created attachment 180535 [details]
Demo script, first file
Comment 2 Matthieu Volat 2017-03-05 14:23:45 UTC
Created attachment 180536 [details]
Demo script, secon file
Comment 3 Matthieu Volat 2017-03-05 14:24:57 UTC
Created attachment 180537 [details]
Trace file
Comment 4 Tijl Coosemans freebsd_committer freebsd_triage 2017-03-06 16:37:59 UTC
This has been fixed in base r312699 and merged to stable/10 and 11 a few days later, so try updating to one of these.

As a workaround you can replace '#! ...' with '#! /compat/linux/bin/bash'.  The problem only exists in the 64 bit linux support so another possibility is to use the 32 bit version of linux_base-c6.  To do that add DEFAULT_VERSIONS+=linux=c6 to /etc/make.conf and build/install emulators/linux_base-c6.
Comment 5 Matthieu Volat 2017-03-06 17:14:12 UTC
Ho thanks! Issue fixed by applying 312699 to src.