Skip to content

When using the HYPERLIGHT_COMPONENT_MACRO_DEBUG flag with multiple calls the files are not loaded properly #1107

@jsturtevant

Description

@jsturtevant

this is the line that causes race condition, if you call host_bindgen macro multiple times in a file, with different .wasm files, then you will not get the correct generated code back, even though the macro actually generates the correct code.

This is happening because of the following reason

  1. host_bindgen() ----------> macro called for the first time --> output gets saved to file.
  2. host_bindgen() ----------> macro called for the n(th) time --> it may return the content of the file that was saved by previous run of the macro on some other .wasm file.

I have tested this multiple times on local pc.

This only happens when we have the HYPERLIGHT_COMPONENT_MACRO_DEBUG os env set, because it is writing to the file system. I think the rust std::fs::write() is either lazy or not synchronous.

This happens because all the macro runs are manipulating the same file on filesystem.

if we need to access the file, then we should do std::fs::read separately, instead of relying on the return value of this function.

Originally posted by @vshailesh in #1020 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions