Subject: bug#20209: GUILE 2.0.11: crash in set_port_filename_x for bytevector ports

From: David Kastrup <[email-masked]>
Date: Thu, 23 Jun 2016 18:59:04 +0200

Andy Wingo <[email-masked]> writes:

> On Sun 29 Mar 2015 15:06, [email-masked] (Ludovic Courtès) writes:
>
>> Mark H Weaver <[email-masked]> skribis:
>>
>>> For these reasons, I decided against recommending those undocumented
>>> initialization functions.  Instead, I suggested that David initialize
>>> binary ports by loading (ice-9 binary-ports):
>>>
>>>   (void) scm_c_resolve_module ("ice-9 binary-ports");
>>
>> That sounds like the best option, indeed.
>>
>>> For Guile 2.0.12, I suggest that we unconditionally do the equivalent of
>>> 'scm_init_bytevectors' and 'scm_init_r6rs_ports' during Guile
>>> initialization, and make those functions into deprecated no-ops.
>>
>> Agreed, that’s what I was going to suggest.
>>
>> That these init functions are not marked as internal is really an
>> oversight.
>>
>> I wouldn’t be against simply making them SCM_INTERNAL in 2.0.12, but
>> making them public + deprecated as you suggest is even better.
>
> WDYT about something like this?

I don't see anything protecting sym_big or sym_little (more accurately,
'big or 'little which are non-immediate SCM values) from collection
which would make sym_big and sym_little useless for comparison.

I'm assuming that not the whole bss segment is getting scanned by
BoehmGC.

-- 
David Kastrup