Open tdely opened 6 months ago
What Nim version were you compiling with?
My guess is Nim 1.x where threads are disabled by default. The issue is, when using libcurl, a callback proc is provided to libcurl. This callback is what fills bodyWrap with data as it is received. Since this callback looks like it is not called in any Nim source code, it is probably being removed when -flto
is used.
This could probably be fixed when compiling including --threads:on for Nim 1.x but that is just a hunch. Passing -f:lto
is not without complication as described in the lengthy paragraphs here: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto
The Nim version was 2.0.2, I should have included that in the original post. Unfortunately not as easy as --threads:on! Thank you for the explanation on how it works.
On Linux when compiled with
-d:danger --passC:-flto
running the following example code will crash withError uncompressing response [PuppyError]
:Removing the for loop avoids the issue, as does not using either
-d:danger
or--passC:-flto
. For some reasonbodyWrap
does not get set properly at line 76 insrc/puppy/platforms/linux/platform.nim
resulting in an empty string.