Subject: bug#19233: Errors building guile on Armv7

From: Mark H Weaver <[email-masked]>
Date: Sun, 07 Dec 2014 00:24:42 -0500

John Darrington <[email-masked]> writes:

> I downloaded the snapshot from http://hydra.nixos.org/build/17611516
>
> and ran into the following problems:
>
> My system does not have a libc with threading, so I configured guile and
> dependencies with --without-threads (or --disable-threads as appropriate).
>
>
> I get the following error:
>
>
> Throw without catch before boot:
>
> Error while printing exception:

[...]

> gdb suggests that the problem is that iconv fails and sets the error
> message: "Cannot find thread-local variables on this target"

That error comes from GDB while trying to access 'errno', which is a
thread-local variable.  We still don't know the value of 'errno'.

As a temporary hack, you could replace the call to 'scm_encoding_error'
at strings.c:2106 with a call to 'printf' that prints out the value of
'errno'.

I guess that both iconv and gdb are somewhat broken on your system.

    Thanks,
      Mark

> #66 0x2ab9e51c in scm_encoding_error (subr=0x2abf6398 <__func__.18606> "scm_to_stringn", err=22, message=0x2abf6108 "cannot convert narrow string to output locale", port=0x4, chr=0x4) at strings.c:1486
> #67 0x2ab9f2e8 in scm_to_stringn (str=0x103870, lenp=0x0, encoding=0x2b0975ec "ANSI_X3.4-1968", handler=SCM_FAILED_CONVERSION_QUESTION_MARK) at strings.c:2106
> #68 0x2ab9ecd0 in scm_to_locale_stringn (str=0x103870, lenp=0x0) at strings.c:1820
> #69 0x2ab9eca4 in scm_to_locale_string (str=0x103870) at strings.c:1814
> #70 0x2ab4d444 in search_path (path=0xfe0e8, filename=0x103870, extensions=0x304, require_exts=0x4, stat_buf=0x7efffa28) at load.c:571
> #71 0x2ab4e126 in scm_init_eval_in_scheme () at load.c:1094
> #72 0x2ab441ce in scm_i_init_guile (base=0x7efffafc) at init.c:507
> #73 0x2aba57a0 in scm_i_init_thread_for_guile (base=0x7efffafc, parent=0x0) at threads.c:833
> #74 0x2aba588a in with_guile_and_parent (base=0x7efffafc, base@entry=<error reading variable: value has been optimized out>, data=0x7efffb24, data@entry=<error reading variable: value has been optimized out>) at threads.c:899
> #75 0x2ac3c552 in GC_call_with_stack_base (fn=<optimized out>, arg=<optimized out>) at misc.c:1840
> #76 0x2aba5964 in scm_i_with_guile_and_parent (func=0x2ab43f31 <invoke_main_func>, data=0x7efffb5c, parent=0x0) at threads.c:949
> #77 0x2aba598e in scm_with_guile (func=0x2ab43f31 <invoke_main_func>, data=0x7efffb5c) at threads.c:955
> #78 0x2ab43f16 in scm_boot_guile (argc=1, argv=0x7efffcd4, main_func=0x89fd <inner_main>, closure=0x0) at init.c:323
> #79 0x00008af8 in main (argc=1, argv=0x7efffcd4) at guile.c:108
> (gdb) frame 67
> #67 0x2ab9f2e8 in scm_to_stringn (str=0x103870, lenp=0x0, encoding=0x2b0975ec "ANSI_X3.4-1968", handler=SCM_FAILED_CONVERSION_QUESTION_MARK) at strings.c:2106
> 2106	        scm_encoding_error (__func__, errno,
> (gdb) print errno
> Cannot find thread-local variables on this target