<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y" -->

---
title: Zombie process and cyclic symlink: an interesting NAVI bug
description: A debugging story about a NAVI process stuck in infinite recursion due to a cyclic symlink (`pfx -> .`) inside a Wine/Proton prefix. The root cause was using...
canonical: https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Zombie process and cyclic symlink: an interesting NAVI bug | daily.dev
og:description: A debugging story about a NAVI process stuck in infinite recursion due to a cyclic symlink (`pfx -> .`) inside a Wine/Proton prefix. The root cause was using...
og:url: https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y
og:image: https://api.daily.dev/og/posts/SrC3uq49y.png
og:image:alt: Zombie process and cyclic symlink: an interesting NAVI bug
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Zombie process and cyclic symlink: an interesting NAVI bug

**[Medium](https://daily.dev/sources/medium_js)** · 4 min read · 0 upvotes · 0 comments

## Summary

A debugging story about a NAVI process stuck in infinite recursion due to a cyclic symlink (`pfx -> .`) inside a Wine/Proton prefix. The root cause was using `Path::is_dir()` in recursive directory traversal, which follows symlinks, causing endless descent into `pfx/pfx/pfx/...`. The fix is to use `DirEntry::file_type()` instead, which does not resolve symlinks. The bug affected three code paths in NAVI and was compounded by `tokio::task::spawn_blocking`, which prevented the Tokio runtime from shutting down while the blocking thread looped infinitely. Tests were written to reproduce the exact scenario before applying the fix, and depth limits were added as an additional safety measure.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@enrellsa10/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-80129196bf01>

## Similar posts on daily.dev

- [GhostTree Attack Abused Recursive Windows Junctions to Hide Malware](https://daily.dev/posts/ghosttree-attack-abused-recursive-windows-junctions-to-hide-malware-h2zyrrfpd) · BleepingComputer · 0 upvotes · 0 comments
- [Making devenv start fast, and the whole nixpkgs with it](https://daily.dev/posts/making-devenv-start-fast-and-the-whole-nixpkgs-with-it-acjj6izku) · Lobsters · 2 upvotes · 0 comments
- [Nix privilege escalation security advisory](https://daily.dev/posts/nix-privilege-escalation-security-advisory-1nv8qiaev) · LWN.net · 0 upvotes · 0 comments
- [Did My Test Suite Just Kill the GitHub Actions Runner\!?](https://daily.dev/posts/did-my-test-suite-just-kill-the-github-actions-runner--socinxsca) · ITNEXT · 2 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust)

[View this post on daily.dev](https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Zombie process and cyclic symlink: an interesting NAVI bug","url":"https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y"},"datePublished":"2026-07-27T07:30:47.459Z","dateModified":"2026-07-27T07:31:35.452Z","description":"A debugging story about a NAVI process stuck in infinite recursion due to a cyclic symlink (`pfx -> .`) inside a Wine/Proton prefix. The root cause was using...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d6ab0a9a223ee01bc82d647f54feb2d2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d6ab0a9a223ee01bc82d647f54feb2d2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/zombie-process-and-cyclic-symlink-an-interesting-navi-bug-src3uq49y","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rust","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"Zombie process and cyclic symlink: an interesting NAVI bug"}]}
```

