Broken backtrace
Yann E. MORIN
yann.morin.1998@anciens.enib.fr
Tue Dec 13 19:42:00 GMT 2011
Benoît, All,
On Tuesday 13 December 2011 19:06:18 Benoît Thébaudeau wrote:
> Hi Yann, all,
>
> I'm not sure if it was already the case with previous Ubuntus, but CT-NG's
> backtrace is broken at least with Ubuntu 11.10 (using bash):
It's also broken here on Debian Squeeze.
I have not yet investigated too much, but I plan on doing so after I finish
some more important stuff (eg. multilib, canadian...).
> [INFO ] Installing PPL: done in 7912.66s (at 198:02)
> [INFO ] Saving state to restart at step 'cloog'...
> [INFO ] =================================================================
> [INFO ] Installing CLooG/ppl
> [ERROR] make[2]: *** [cloog] Error 1
> [ERROR] make[1]: *** [check-recursive] Error 1
> [ERROR]
> [ERROR] >>
> [ERROR] >> Error happened in: main[scripts/crosstool-NG.sh]
> [ERROR] >>
> [ERROR] >> For more info on this error, look at the file: 'build.log'
> [ERROR] >> There is a list of known issues, some with workarounds, in:
> [ERROR] >> '/Toolchains/crosstool-ng/build/share/doc/ct-ng-hg+default-69cfd6e0f1d1/B - Known issues.txt'
> [ERROR]
> [ERROR] Build failed in step 'Extracting and patching toolchain components'
> [ERROR]
> [ERROR] (elapsed: 198:20.71)
>
> The step should have been 'Installing CLooG/ppl', and the calls should have been
> backtraced.
>
> I've performed some tests, which show that this issue is caused by the following
> lines:
>
> 14 # Bail out early in subshell, the upper level shell will act accordingly.
> 15 [ ${BASH_SUBSHELL} -eq 0 ] || exit $ret
>
> http://crosstool-ng.org/hg/crosstool-ng/file/096845dbd877/scripts/functions#l14
>
> The trace should be displayed for the deepest subshell, not for the top one.
>
> For this example, I end up with subshells 2 to 0, and the trace variables
> CT_STEP_COUNT and CT_STEP_MESSAGE are correct only for subshells 2 and 1. For
> subshell 0, these variables are like before do_cloog() is called, i.e. 1 for
> ${CT_STEP_COUNT}, "<none>" for ${CT_STEP_MESSAGE[1]} and "Extracting and
> patching toolchain components" for ${CT_STEP_MESSAGE[2]}. CT_OnError() sets
> CT_STEP_COUNT to 2 before logging ${CT_STEP_MESSAGE[${CT_STEP_COUNT}]}, hence
> the result.
OK, I just understood what happens! Thanks for pointing this.
Can you try to revert changeset #652e56d6d35a:
scripts: execute each steps in a subshell
To avoid variable leakage from one step to another, isolate the
steps from each others by running them in their own sub-shell.
This avoids variables leaking from one step to the others.
> Notes regarding CT_OnError() (nothing to do with this issue):
> - The step variable (already used in main()) could be defined as local to be
> cleaner, even if it does not really matter when exiting.
> - "offset=1" seems to be a spurious line.
Probably both right, I'll look after dinner.
> As to the error itself of my example, I'm testing a patch I've just cooked.
Thank you!
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list