<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: erebe__</title><link>https://news.ycombinator.com/user?id=erebe__</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 19 Jun 2026 22:12:51 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=erebe__" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by erebe__ in "Zero-Touch OAuth for MCP"]]></title><description><![CDATA[
<p>We had the same issue with the client_id and for security reason we weren't willing to enable DCR.<p>What we ended up doing, was the app proxying the OAuth flow, to inject a hardcoded client_id. So we lie to the MCP client telling it we support DCR while behind the hood we use a standalone client_id as usual for the MCP.<p>If you want to take example at it <a href="https://gist.github.com/erebe/a5de36d42214721b2466fb0e66f61c5e" rel="nofollow">https://gist.github.com/erebe/a5de36d42214721b2466fb0e66f61c...</a></p>
]]></description><pubDate>Fri, 19 Jun 2026 09:00:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48596439</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=48596439</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48596439</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>It was a parti pris by me, I wanted the article to stay focus on the how, not much on the why. But I agree, even while the context is specific to us, many people wanted more interest of the surrounding, and why it happened. I wanted to explain the method ¯\_(ツ)_/¯</p>
]]></description><pubDate>Sun, 19 Jan 2025 17:00:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=42758795</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42758795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42758795</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>It is most likely me reading too quickly. I was caught off guard by the article gaining traction in a Sunday, and as I have other duties during the weekend, I am reading/responding only when I can sneak in.<p>For your comment, I think you are right regarding compression of debug symbols that add up to the peak memory, but I think you are misleading when you think the debug symbols are uncompressed when the app/binary is started/loaded. Decompression only happens for me when this section is accessed by debugger or equivalent.
It is not the same thing as when the binary is fully compressed, like with upx for example.<p>I have done a quick sanity check on my desktop, I got.<p><pre><code>  [profile.release]
  lto = "thin"
  debug = true
  strip = false

  export RUSTFLAGS="-C link-arg=-Wl,--compress-debug-sections=zlib -C force-frame-pointers=yes"
  cargo build --bin engine-gateway --release
  
 </code></pre>
From rss memory at startup I get ~128 MB, and after the panic at peak I get ~627 MB.<p>When compiled with those flags<p><pre><code>  export RUSTFLAGS="-C force-frame-pointers=yes" 
  cargo build --bin engine-gateway --release
</code></pre>
From rss memory at startup I get ~128 MB, and after the panic at peak I get ~474 MB.<p>So the peak is taller indeed when the debug section is compressed, but the binary in memory when started is roughly equivalent. (virtual mem too)<p>I had some hard time getting a source that may validate my belief regarding when the debug symbol are uncompressed. But based on <a href="https://inbox.sourceware.org/binutils/20080622061003.D279F3F303A@localhost/" rel="nofollow">https://inbox.sourceware.org/binutils/20080622061003.D279F3F...</a> and the help of claude.ai, I would say it is only when those sections are accessed.<p>for what is worth, the whole answer of claude.ai<p><pre><code>  The debug sections compressed with --compress-debug-sections=zlib are decompressed:

  At runtime by the debugger (like GDB) when it needs to access the debug information:

  When setting breakpoints
  When doing backtraces
  When inspecting variables
  During symbol resolution


  When tools need to read debug info:

  During coredump analysis
  When using tools like addr2line
  During source-level debugging
  When using readelf with the -w option


  The compression is transparent to these tools - they automatically handle the decompression when needed.    The sections remain compressed on disk, and are only decompressed in memory when required.
  This helps reduce the binary size on disk while still maintaining full debugging capabilities, with only a small runtime performance cost when the debug info needs to be accessed.
  The decompression is handled by the libelf/DWARF libraries that these tools use to parse the ELF files.</code></pre></p>
]]></description><pubDate>Sun, 19 Jan 2025 16:32:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=42758503</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42758503</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42758503</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>I will give it a shot next week to try out ;P<p>For this particular service, the size does not matter really. For others, it makes more diff (several hundred of Mb) and as we deploy on customers infra, we want images' size to stay reasonable. 
For now, we apply the same build rules for all our services to stay consistent.</p>
]]></description><pubDate>Sun, 19 Jan 2025 12:40:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=42756488</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42756488</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42756488</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>Thanks, was not aware there was granularity for debuginfo ;)</p>
]]></description><pubDate>Sun, 19 Jan 2025 12:00:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42756298</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42756298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42756298</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>Normal build<p><pre><code>  cargo build --bin engine-gateway --release
      Finished `release` profile [optimized + debuginfo] target(s) in 1m 00s

  ls -lh target/release/engine-gateway 
  .rwxr-xr-x erebe erebe 198 MB Sun Jan 19 12:37:35 2025    target/release/engine-gateway

</code></pre>
what we ship<p><pre><code>  export RUSTFLAGS="-C link-arg=-Wl,--compress-debug-sections=zlib -C force-frame-pointers=yes" 
  cargo build --bin engine-gateway --release
      Finished `release` profile [optimized + debuginfo] target(s) in 1m 04s

  ls -lh target/release/engine-gateway
  .rwxr-xr-x erebe erebe 61 MB Sun Jan 19 12:39:13 2025  target/release/engine-gateway

</code></pre>
The diff is more impressive on some bigger projects</p>
]]></description><pubDate>Sun, 19 Jan 2025 11:42:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=42756205</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42756205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42756205</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>Hello,<p>You can see my other comment <a href="https://news.ycombinator.com/item?id=42708904#42756072">https://news.ycombinator.com/item?id=42708904#42756072</a> for more details.<p>But yes, the cache does persist after the first call, the resolved symbols stay in the cache to speed up the resolution of next calls.<p>Regarding the why, it is mainly because<p>1. this app is a gRPC server and contains a lot of generated code (you can investigate binary bloat with rust with <a href="https://github.com/RazrFalcon/cargo-bloat">https://github.com/RazrFalcon/cargo-bloat</a>)<p>2. and that we ship our binary with debug symbols, with those options
``` ENV RUSTFLAGS="-C link-arg=-Wl,--compress-debug-sections=zlib -C force-frame-pointers=yes" ```<p>For the panic, indeed, I had the same question on Reddit. For this particular service, we don't expect panics at all, it is just that by default we ship all our rust binaries with backtrace enabled. And we have added an extra api endpoint to trigger a catched panic on purpose for other apps to be sure our sizing is correct.</p>
]]></description><pubDate>Sun, 19 Jan 2025 11:33:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=42756148</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42756148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42756148</guid></item><item><title><![CDATA[New comment by erebe__ in "Rust: Investigating an Out of Memory Error"]]></title><description><![CDATA[
<p>Sorry if the article is misleading.<p>The first increase of the memory limit was not 4G, but something roughly around 300Mb/400Mb, and the OOM did happen again with this setting.<p>Thus leading to a 2nd increase to 4Gi to be sure the app would not get OOM killed when the behavior get triggered. We needed the app to be alive/running for us to investigate the memory profiling.<p>Regarding the increase of 400MiB, yeah it is a lot, and it was a surprise to us too. We were not expecting such increase. There are, I think 2 reasons behind this.<p>1. This service is a grpc server, which has a lot of code generated, so lots of symbols<p>2. we compile the binary with debug symbols and a flag to compress the debug symbols sections to avoid having huge binary. Which may part be of this issue.</p>
]]></description><pubDate>Sun, 19 Jan 2025 11:18:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42756072</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42756072</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42756072</guid></item><item><title><![CDATA[Rust: Investigating an Out of Memory Error]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.qovery.com/blog/rust-investigating-a-strange-out-of-memory-error/">https://www.qovery.com/blog/rust-investigating-a-strange-out-of-memory-error/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42708904">https://news.ycombinator.com/item?id=42708904</a></p>
<p>Points: 111</p>
<p># Comments: 29</p>
]]></description><pubDate>Wed, 15 Jan 2025 09:07:12 +0000</pubDate><link>https://www.qovery.com/blog/rust-investigating-a-strange-out-of-memory-error/</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=42708904</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42708904</guid></item><item><title><![CDATA[New comment by erebe__ in "VPN ban is strangling communication in Myanmar"]]></title><description><![CDATA[
<p>I use the word tunnel but it would be more correct to use "proxy"<p>There is no wrappring of udp packet into another layer of TCP. Wstunnel unpack the data at the client forward it using tcp/websocket, and after re-take this data to put it back into its original form (i.e: udp)<p>so there is no encapsulation of many protocol.<p>The only place where there is encapsulation, is for tls. if your client use tls to connect to wstunnel server. And that your data is already encrypted with tls (i.e: https) there will be 2 tls encryption</p>
]]></description><pubDate>Sun, 07 Jul 2024 12:51:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=40897291</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=40897291</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40897291</guid></item><item><title><![CDATA[New comment by erebe__ in "VPN ban is strangling communication in Myanmar"]]></title><description><![CDATA[
<p>Shameless plug, you can use wstunnel which disguise your traffic as websocket to tunnel any traffic you want. I had most success with it, as it uses TCP, than with QUIC/HTTP3 as usually UDP is more heavily restricted.
It works behind GFW and let you use your wireguard for example...
I had also good feedback from people in Turkey and Iran<p>wstunnel: <a href="https://github.com/erebe/wstunnel">https://github.com/erebe/wstunnel</a></p>
]]></description><pubDate>Sat, 06 Jul 2024 06:43:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=40888576</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=40888576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40888576</guid></item><item><title><![CDATA[New comment by erebe__ in "WsTunnel – Tunnel Your Traffic over WebSocket or HTTP2 – Bypass Firewalls/DPI"]]></title><description><![CDATA[
<p>WsTunnel improved a lot since last shared/communicated version, with the addition of:<p>- Reverse tunneling \o/
- Added support of unix socket, transparent proxy/ip, UDP for socks5
- Support of mTLS
- Config file to restrict the allowed tunnels
- Cerfificate and config auto-reload
- Added http2 as transport protocol (websocket is more performant)
- Complete rewrite fron Haskell to Rust<p>Hope you enjoy and find it useful :-)<p><a href="https://github.com/erebe/wstunnel?tab=readme-ov-file#understand-command-line-syntax-">https://github.com/erebe/wstunnel?tab=readme-ov-file#underst...</a></p>
]]></description><pubDate>Thu, 23 May 2024 14:18:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=40455074</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=40455074</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40455074</guid></item><item><title><![CDATA[WsTunnel – Tunnel Your Traffic over WebSocket or HTTP2 – Bypass Firewalls/DPI]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/erebe/wstunnel">https://github.com/erebe/wstunnel</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40455073">https://news.ycombinator.com/item?id=40455073</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 23 May 2024 14:18:51 +0000</pubDate><link>https://github.com/erebe/wstunnel</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=40455073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40455073</guid></item><item><title><![CDATA[New comment by erebe__ in "Reverst: Reverse Tunnels in Go over HTTP/3 and QUIC"]]></title><description><![CDATA[
<p>Nice project :)<p>HTTP3 may not be suitable for all environments, as UDP is pretty commonly filtered.<p>If you are in such scenario, you may want to take a look at wstunnel, it allows you to do the same (and more) over websocket or HTTP2.<p><a href="https://github.com/erebe/wstunnel">https://github.com/erebe/wstunnel</a></p>
]]></description><pubDate>Mon, 08 Apr 2024 19:58:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=39973127</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=39973127</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39973127</guid></item><item><title><![CDATA[New comment by erebe__ in "Tell HN: Russia has started blocking OpenVPN/WireGuard connections"]]></title><description><![CDATA[
<p>Shameless plug, there is also wstunnel (i am its author) <a href="https://github.com/erebe/wstunnel/">https://github.com/erebe/wstunnel/</a>, hope you enjoy.</p>
]]></description><pubDate>Sat, 20 Jan 2024 19:01:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=39071041</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=39071041</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39071041</guid></item><item><title><![CDATA[New comment by erebe__ in "Tell HN: Russia has started blocking OpenVPN/WireGuard connections"]]></title><description><![CDATA[
<p>You can use wstunnel to bypass firewall. I had many feedbacks from chinese/turkish/iranian people using it with success. 
Easy to setup also with static binaries.<p><a href="https://github.com/erebe/wstunnel/">https://github.com/erebe/wstunnel/</a></p>
]]></description><pubDate>Sat, 20 Jan 2024 18:58:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=39071018</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=39071018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39071018</guid></item><item><title><![CDATA[New comment by erebe__ in "Common Mistakes with Rust Async"]]></title><description><![CDATA[
<p>The article share some common pitfalls people stumble upon when starting using Async in Rust.<p>If you know some others that are not listed, let's share it in comment :)<p>P.s: Other tuto article, if you are starting with Async <a href="https://www.qovery.com/blog/a-guided-tour-of-streams-in-rust" rel="nofollow noreferrer">https://www.qovery.com/blog/a-guided-tour-of-streams-in-rust</a></p>
]]></description><pubDate>Wed, 13 Dec 2023 10:38:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=38625385</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=38625385</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38625385</guid></item><item><title><![CDATA[Common Mistakes with Rust Async]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.qovery.com/blog/common-mistakes-with-rust-async/">https://www.qovery.com/blog/common-mistakes-with-rust-async/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38625384">https://news.ycombinator.com/item?id=38625384</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 13 Dec 2023 10:38:40 +0000</pubDate><link>https://www.qovery.com/blog/common-mistakes-with-rust-async/</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=38625384</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38625384</guid></item><item><title><![CDATA[New comment by erebe__ in "Build your own (IPv6) cloud network with Linux and WireGuard"]]></title><description><![CDATA[
<p>Hello, Just sharing an article that explains how to build your own cloud network with Linux (ntftables) and wireguard. 
IPv6 is a first class citizen in the article, 
hope you enjoy :)</p>
]]></description><pubDate>Fri, 06 Oct 2023 07:53:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=37788198</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=37788198</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37788198</guid></item><item><title><![CDATA[Build your own (IPv6) cloud network with Linux and WireGuard]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.qovery.com/blog/build-your-own-network-with-linux-and-wireguard/">https://www.qovery.com/blog/build-your-own-network-with-linux-and-wireguard/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37788197">https://news.ycombinator.com/item?id=37788197</a></p>
<p>Points: 4</p>
<p># Comments: 2</p>
]]></description><pubDate>Fri, 06 Oct 2023 07:53:24 +0000</pubDate><link>https://www.qovery.com/blog/build-your-own-network-with-linux-and-wireguard/</link><dc:creator>erebe__</dc:creator><comments>https://news.ycombinator.com/item?id=37788197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37788197</guid></item></channel></rss>