Subject: bug#7460: 23.2.90; temacs needs LANG=C, build will fail if not.

From: Jan Djärv <[email-masked]>
Date: Mon, 22 Nov 2010 22:58:03 +0100

Stefan Monnier skrev 2010-11-21 21.34:
>>>> Invalid hash table rehash size: 1\,5
>>> Where does this "1,5" come from?
>> src/lisp.h:#define DEFAULT_REHASH_SIZE 1.5
>> Apparently this code in fns.c, Fmake_hash_table somehow turns it into 1,5.
>
>>    /* Look for `:rehash-size SIZE'.  */
>>    i = get_key_arg (QCrehash_size, nargs, args, used);
>>    rehash_size = i<  0 ? make_float (DEFAULT_REHASH_SIZE) : args[i];
>>    if (!NUMBERP (rehash_size)
>>        || (INTEGERP (rehash_size)&&  XINT (rehash_size)<= 0)
>>        || XFLOATINT (rehash_size)<= 1.0)
>>      signal_error ("Invalid hash table rehash size", rehash_size);
>
> Hmm... I can't think of any way this code could turn the 1.5 float into
> a "1,5" symbol.

It is args[i] that has the wrong value.  But I can't figure out where it comes 
from.  No lisp code I see sets :rehash-size explicitly to 1.5.  The
backtrace is just

#0  Fmake_hash_table (nargs=8, args=0x7fffffffcbd0) at 
/home/jhd/src/emacs/trunk/src/fns.c:4349
#1  0x00000000006302cb in read1 (readcharfun=14797521, pch=0x7fffffffce8c, 
first_in_list=0) at /home/jhd/src/emacs/trunk/src/lread.c:2336
#2  0x000000000062f6e2 in read0 (readcharfun=14797521) at 
/home/jhd/src/emacs/trunk/src/lread.c:1955
#3  0x000000000062f61d in read_internal_start (stream=14797521, 
start=13414610, end=13414610) at /home/jhd/src/emacs/trunk/src/lread.c:1926
#4  0x000000000062f401 in Fread_from_string (string=14797521, start=13414610, 
end=13414610) at /home/jhd/src/emacs/trunk/src/lread.c:1872
#5  0x00000000006009f2 in Ffuncall (nargs=2, args=0x7fffffffd018) at 
/home/jhd/src/emacs/trunk/src/eval.c:2996
#6  0x000000000065231d in Fbyte_code (bytestr=14797297, vector=14798629, 
maxdepth=16) at /home/jhd/src/emacs/trunk/src/bytecode.c:679
#7  0x00000000005ff4c3 in Feval (form=14795334) at 
/home/jhd/src/emacs/trunk/src/eval.c:2358
#8  0x000000000062ef02 in readevalloop (readcharfun=14164562, stream=0xdae520, 
sourcename=14384145, evalfun=0x5fee05 <Feval>, printflag=0, unibyte=13414610, 
readfun=13414610, start=13414610, end=13414610) at 
/home/jhd/src/emacs/trunk/src/lread.c:1737
#9  0x000000000062da01 in Fload (file=14384017, noerror=13414610, 
nomessage=13414610, nosuffix=13414610, must_suffix=13414610) at 
/home/jhd/src/#10 0x00000000005ff541 in Feval (form=14291270) at 
/home/jhd/src/emacs/trunk/src/eval.c:2366
#11 0x000000000062ef02 in readevalloop (readcharfun=14164562, stream=0xdaa130, 
sourcename=14325681, evalfun=0x5fee05 <Feval>, printflag=0, unibyte=13414610, 
readfun=13414610, start=13414610, end=13414610) at 
/home/jhd/src/emacs/trunk/src/lread.c:1737
#12 0x000000000062da01 in Fload (file=14325425, noerror=13414610, 
nomessage=13414610, nosuffix=13414610, must_suffix=13414610) at 
/home/jhd/src/emacs/trunk/src/lread.c:1228
#13 0x00000000005ff541 in Feval (form=14302662) at 
/home/jhd/src/emacs/trunk/src/eval.c:2366
#14 0x0000000000556e8c in top_level_2 () at 
/home/jhd/src/emacs/trunk/src/keyboard.c:1330
#15 0x00000000005fd4ae in internal_condition_case (bfun=0x556e76 
<top_level_2>, handlers=13825266, hfun=0x556976 <cmd_error>) at 
/home/jhd/src/emacs/trunk/src/eval.c:1460
#16 0x0000000000556ed6 in top_level_1 (ignore=13414610) at 
/home/jhd/src/emacs/trunk/src/keyboard.c:1338
#17 0x00000000005fcd90 in internal_catch (tag=13821330, func=0x556e8e 
<top_level_1>, arg=13414610) at /home/jhd/src/emacs/trunk/src/eval.c:1204
emacs/trunk/src/lread.c:1228
#18 0x0000000000556dca in command_loop () at 
/home/jhd/src/emacs/trunk/src/keyboard.c:1293
#19 0x00000000005563f7 in recursive_edit_1 () at 
/home/jhd/src/emacs/trunk/src/keyboard.c:923
#20 0x00000000005565fb in Frecursive_edit () at 
/home/jhd/src/emacs/trunk/src/keyboard.c:985
#21 0x0000000000554587 in main (argc=5, argv=0x7fffffffe5e8) at 
/home/jhd/src/emacs/trunk/src/emacs.c:1716

Lisp Backtrace:
"read-from-string" (0xffffd020)
"byte-code" (0xffffd380)
"load" (0xffffd840)
"load" (0xffffdd00)

Any idea what I should look at?  The string in Fread_from_string is
"#s(hash-table size 65 test eql rehash-size 1,5 rehash-threshold 0,8 data ())"

but how to figure out where it comes from?

	Jan D.