On Sat, Feb 28, 2026 at 04:30:47PM +0100, Bruno Haible wrote:
> Hello Patrice,
>
> > Something that I really do not understand is why this issue does not
> > happen for some variables in the texinfo libraries used by the XS
> > modules objects. ...
> > Therefore, the translated_special_unit_info symbol seems to be in two
> > different compilation units, and should be used in a function called
> > in tests, and yet there is no failure.
>
> For the problem to occur, you need to have
> - one access of the variable in libtexinfo,
> - AND one access of the variable in the ConvertXS module shared library,
> - AND one of these is read/write, and the other one depends on it.
I tried to check all the extern variables, and found the following that
are set in libtexinfo, used in other libraries and set dynamically, such
that, if I understand well, they fall in the situation you described.
Yet they do not cause the tests to fail in cygwin github CI and in Eli
tests:
C/main/customization_options.h: txi_base_options, txi_base_sorted_options,
txi_options_command_map => libtexinfo-convert (converter.c, format_html.c...)
C/main/document.h: txi_paths_info => libtexinfo-convert (convert_html.c...),
libtexinfo-main (texinfo.c)
C/main/translations.h: translation_cache
=> libtexinfo-convert (converter.c, convert_to_text.c)
C/main/unicode.h: unicode_character_brace_no_arg_commands
=> libtexinfo-convert (html_prepare_converter.c)
C/main/utils.h: output_conversions, input_conversions
=> libtexinfo-convert (html_prepare_converter.c...),
libtexinfo-main (swig_interface.c)
In any case, if this is actually an issue, it should be easy either to
add some __declspec or add some functions to get the variables in other
libraries (they tend to be set in the library they are part of).
--
Pat