Giter VIP home page Giter VIP logo

Comments (7)

stephenberry avatar stephenberry commented on May 27, 2024 2

@jbbjarnason, I discovered this last night as well, as my company uses gcc 13 in production. I do not currently have a bugzilla account, so feel free to go ahead and report this. I'm going to try to simplify the code this morning so that gcc will build. I was able to simplify the code last night so that the compiler no longer segfaults, but its errors are bogus.

from glaze.

jbbjarnason avatar jbbjarnason commented on May 27, 2024

So this is a problem with gcc 13, I added a PR with gcc 13 in github workflows here, #605 which reproduces the error.

@stephenberry do you have an account at gcc bugzilla or should I make one to report this?

from glaze.

stephenberry avatar stephenberry commented on May 27, 2024

Here is a simplified test that causes the segfault:

struct put_action
{
};

struct delete_action
{
};

using tagged_variant = std::variant<put_action, delete_action>;

template <>
struct glz::meta<tagged_variant>
{
   static constexpr std::string_view tag = "action";
   static constexpr auto ids = std::array{"PUT", "DELETE"}; // Defaults to glz::name_v of the type
};

suite tagged_variant_tests = [] {
   "tagged_variant_read_tests"_test = [] {
      tagged_variant var{};
      expect(glz::read_json(var, R"({})") == glz::error_code::none);
   };
};

from glaze.

justend29 avatar justend29 commented on May 27, 2024

you two rock. sad about the error, but good finds

from glaze.

stephenberry avatar stephenberry commented on May 27, 2024

I found a workaround, for some reason GCC 13 is corrupting the capture by reference for std::array<std::string_view, get_max_keys<T, N>> data{};

This is for the function: get_combined_keys_from_variant

The fix is that we can just change this to a pointer and GCC will properly capture the pointer:

auto* data_ptr = &data; // This intermediate pointer is necessary for GCC 13 (otherwise segfaults with reflection logic)

from glaze.

stephenberry avatar stephenberry commented on May 27, 2024

Fixed in #605

from glaze.

jbbjarnason avatar jbbjarnason commented on May 27, 2024

Great job

from glaze.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.