You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Missing response body on Linux using -d:danger --passC:-flto #112
On Linux when compiled with -d:danger --passC:-flto running the following example code will crash with Error uncompressing response [PuppyError]:
import puppy
for i in1..1:
let resp =fetch("http://neverssl.com")
Removing the for loop avoids the issue, as does not using either -d:danger or --passC:-flto.
For some reason bodyWrap does not get set properly at line 76 in src/puppy/platforms/linux/platform.nim resulting in an empty string.
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.
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.
Activity
guzba commentedon Feb 2, 2024
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
-fltois used.This could probably be fixed when compiling including --threads:on for Nim 1.x but that is just a hunch. Passing
-f:ltois not without complication as described in the lengthy paragraphs here: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fltotdely commentedon Feb 2, 2024
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.