Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ABI break in fmt 11.1.0 - 11.1.3 blocking conda-forge builds #4359

Closed
bdice opened this issue Feb 21, 2025 · 4 comments
Closed

ABI break in fmt 11.1.0 - 11.1.3 blocking conda-forge builds #4359

bdice opened this issue Feb 21, 2025 · 4 comments

Comments

@bdice
Copy link

bdice commented Feb 21, 2025

conda-forge builds of fmt 11.1.0 through 11.1.3 have all failed due to an ABI break on Windows that was uncovered during downstream tests of libmamba. @saraedum identified this as the breaking symbol:

-??$vformat_to@D@detail@v11@fmt@@YAXAEAV?$buffer@D@012@V?$basic_string_view@D@12@V?$basic_format_args@Vcontext@v11@fmt@@@12@Vlocale_ref@012@@Z
+??$vformat_to@D@detail@v11@fmt@@YAXAEAV?$buffer@D@012@V?$basic_string_view@D@12@V?$basic_format_args@Vcontext@v11@fmt@@@12@Ulocale_ref@012@@Z

A few users have requested a newer fmt release, which probably requires a fix for this (if this is indeed the root cause -- I have not verified if there are any other ABI breaks). The failure logs can be seen here: conda-forge/fmt-feedstock#55

The error looks like:

import: 'libmambapy'
Traceback (most recent call last):
  File "D:\bld\fmt_1737954208540\test_tmp\run_test.py", line 2, in <module>
    import libmambapy
  File "D:\bld\fmt_1737954208540\_test_env\Lib\site-packages\libmambapy\__init__.py", line 7, in <module>
    raise e
  File "D:\bld\fmt_1737954208540\_test_env\Lib\site-packages\libmambapy\__init__.py", line 4, in <module>
    from libmambapy.bindings import *  # noqa: F401,F403
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: DLL load failed while importing bindings: The specified procedure could not be found.

I attempted to demangle the symbols above, and got:

- void __cdecl fmt::v11::detail::vformat_to<char>(class fmt::v11::detail::buffer<char> &, class fmt::v11::basic_string_view<char>, class fmt::v11::basic_format_args<class fmt::v11::context>, class fmt::v11::detail::locale_ref)
+ void __cdecl fmt::v11::detail::vformat_to<char>(class fmt::v11::detail::buffer<char> &, class fmt::v11::basic_string_view<char>, class fmt::v11::basic_format_args<class fmt::v11::context>, struct fmt::v11::detail::locale_ref)

That points to this commit as the source of the change: f213d83

@bdice bdice changed the title ABI break in fmt 11.1.0 - 11.1.3 ABI break in fmt 11.1.0 - 11.1.3 blocking conda-forge builds Feb 21, 2025
@vitaut
Copy link
Contributor

vitaut commented Feb 22, 2025

Thanks for reporting. Does changing struct to class in

struct locale_ref {
resolve the issue?

@vitaut
Copy link
Contributor

vitaut commented Feb 26, 2025

Should be fixed in 3401ce2. Will make a patch release shortly.

@vitaut vitaut closed this as completed Feb 26, 2025
@bdice
Copy link
Author

bdice commented Feb 28, 2025

Thank you! Apologies I wasn’t able to test that change sooner.

@vitaut
Copy link
Contributor

vitaut commented Mar 1, 2025

BTW it was released as https://github.com/fmtlib/fmt/releases/tag/11.1.4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants