On Sun, Jul 19, 2015 at 12:49 PM, Dimitry Andric <dimi...@andric.com> wrote:
> Another new problem with the test-release.sh script is that it can cause the 
> whole machine (!) to run out of memory, when comparing phase 2 with phase 3, 
> due to the following fragment:
>
>    470          echo "# Comparing Phase 2 and Phase 3 files"
>    471          for p2 in `find $llvmCore_phase2_objdir -name '*.o'` ; do
>    472              p3=`echo $p2 | sed -e 's,Phase2,Phase3,'`
>    473              # Substitute 'Phase2' for 'Phase3' in the Phase 2 object 
> file in
>    474              # case there are build paths in the debug info. On some 
> systems,
>    475              # sed adds a newline to the output, so pass $p3 through 
> sed too.
>    476              if ! cmp --ignore-initial=16 <(sed -e 's,Phase2,Phase3,g' 
> $p2) \
>    477                      <(sed -e '' $p3) > /dev/null 2>&1 ; then
>    478                  echo "file `basename $p2` differs between phase 2 and 
> phase 3"
>    479              fi
>    480          done
>
> Because cmp(1) on FreeBSD does not support the --ignore-initial option, which 
> is a GNU extension, the command immediately fails.  Then, the <(...) 
> constructs on lines 476 and 477 spawn two new bash instances per iteration, 
> and these never get cleaned up, at least not on FreeBSD.  This may very well 
> be a bash bug.
>
> Alternatively, the 'skip' values can be specified as the third and fourth 
> argument on the cmp(1) command line, and this works on both Linux, FreeBSD 
> and OSX; e.g. this:
>
>             if ! cmp -s <(sed -e 's,Phase2,Phase3,g' $p2) <(sed -e '' $p3) \
>                     16 16 ; then

That seems like a good solution, feel free to commit that.

I wonder why the first 16 bytes need to be skipped though. Does anyone know?

Thanks,
Hans

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to