[BUG] Hang with large ignored directory
Environment
- Platform (select one):
- [x] Anthropic API
- [ ] AWS Bedrock
- [ ] Google Vertex AI
- [ ] Other: <!-- specify -->
- Claude CLI version:
1.0.61 (Claude Code) - Operating System:
macOS 15.5 - Terminal:
VSCode terminal
Bug Description
I have a directory in my workspace with a 100k+ files. My existing tooling (VSCode, rust-analyzer, cargo, github cli, codex, cursor, etc) is able to ignore it as configured so has no issue with this. Claude Code however hangs on ~almost any command, while performing e.g. Search(pattern: "**/Cargo.toml").
Steps to Reproduce
- Create a directory with 100k files
- Ignore it with:
``json``
{
"ignorePatterns": [
"/dump"
],
"permissions": {
"allow": [],
"deny": [
"Read(/dump)"
]
}
}
- Run any query that triggers a
Search(pattern: "**/...")
Expected Behavior
It completes ~immediately as the rest of the workspace is only ~500 files.
Actual Behavior
It takes many minutes/hours (I gave up and switched to other tools).
Additional Context
A stack trace during the hang, suggesting relating to fs.readdir or fs.glob:
2559 Thread_71300775 DispatchQueue_1: com.apple.main-thread (serial)
+ 2559 start (in dyld) + 6076 [0x196b12b98]
+ 2559 node::Start(int, char**) (in node) + 608 [0x102a52634]
+ 2559 node::NodeMainInstance::Run() (in node) + 124 [0x102aa6938]
+ 2559 node::NodeMainInstance::Run(node::ExitCode*, node::Environment*) (in node) + 184 [0x102aa6ba4]
+ 2559 node::SpinEventLoopInternal(node::Environment*) (in node) + 240 [0x1029cd3ec]
+ 2559 uv_run (in libuv.1.dylib) + 276 [0x107f1ab58]
+ 2559 uv__io_poll (in libuv.1.dylib) + 1224 [0x107f2abd0]
+ 2559 uv__async_io (in libuv.1.dylib) + 288 [0x107f1a6bc]
+ 2559 uv__work_done (in libuv.1.dylib) + 180 [0x107f16e0c]
+ 2559 node::MakeLibuvRequestCallback<uv_fs_s, void (*)(uv_fs_s*)>::Wrapper(uv_fs_s*) (in node) + 116 [0x102a77524]
+ 2559 node::fs::AfterScanDir(uv_fs_s*) (in node) + 640 [0x102a820e4]
+ 2559 node::fs::FSReqCallback::Resolve(v8::Local<v8::Value>) (in node) + 240 [0x102a80bf8]
+ 2559 node::AsyncWrap::MakeCallback(v8::Local<v8::Function>, int, v8::Local<v8::Value>*) (in node) + 240 [0x1029db928]
+ 2559 node::InternalMakeCallback(node::Environment*, v8::Local<v8::Object>, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*, node::async_context, v8::Local<v8::Value>) (in node) + 508 [0x1029ccbd8]
+ 2559 v8::Function::Call(v8::Isolate*, v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) (in node) + 176 [0x102bbf5c4]
+ 2559 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::DirectHandle<v8::internal::Object>, v8::internal::DirectHandle<v8::internal::Object>, v8::base::Vector<v8::internal::DirectHandle<v8::internal::Object> const>) (in node) + 88 [0x102ce2ccc]
+ 2559 v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) (in node) + 1532 [0x102ce32dc]
+ 2559 Builtins_JSEntry (in node) + 176 [0x103506570]
+ 2559 Builtins_JSEntryTrampoline (in node) + 172 [0x1035068cc]
+ 2559 ??? (in <unknown binary>) [0x1387774ec]
+ 2559 ??? (in <unknown binary>) [0x1387666c8]
+ 2559 ??? (in <unknown binary>) [0x1387778d0]
+ 2553 ??? (in <unknown binary>) [0x138769c28]
+ ! 2553 Builtins_CEntry_Return1_ArgvOnStack_BuiltinExit (in node) + 84 [0x1035a5e94]
+ ! 2553 v8::internal::Builtin_ArrayUnshift(int, unsigned long*, v8::internal::Isolate*) (in node) + 148 [0x102bf3580]
+ ! 2553 v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2>>::AddArguments(v8::internal::DirectHandle<v8::internal::JSArray>, v8::internal::DirectHandle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where) (in node) + 296 [0x102eeabfc]
+ ! 2553 v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2>>::MoveElements(v8::internal::Isolate*, v8::internal::DirectHandle<v8::internal::JSArray>, v8::internal::DirectHandle<v8::internal::FixedArrayBase>, int, int, int, int, int) (in node) + 260 [0x102eeadf8]
+ ! 1378 v8::internal::WriteBarrier::ForRange<v8::internal::FullObjectSlot>(v8::internal::Heap*, v8::internal::Tagged<v8::internal::HeapObject>, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot) (in node) + 584,660,... [0x102d83f40,0x102d83f8c,...]
+ ! 745 v8::internal::WriteBarrier::ForRange<v8::internal::FullObjectSlot>(v8::internal::Heap*, v8::internal::Tagged<v8::internal::HeapObject>, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot) (in node) + 636 [0x102d83f74]
+ ! : 739 heap::base::BasicSlotSet<8ul>::Insert<(heap::base::BasicSlotSet<8ul>::AccessMode)1>(unsigned long) (in node) + 20,52,... [0x102d8480c,0x102d8482c,...]
+ ! : 6 v8::internal::RememberedSet<(v8::internal::RememberedSetType)0>::Insert<(v8::internal::AccessMode)1>(v8::internal::MutablePageMetadata*, unsigned long) (in node) + 20,0 [0x102d83c00,0x102d83bec]
+ ! 245 v8::internal::Heap::MoveRange(v8::internal::Tagged<v8::internal::HeapObject>, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot, int, v8::internal::WriteBarrierMode) (in node) + 296 [0x102d8c050]
+ ! : 245 _platform_memmove (in libsystem_platform.dylib) + 536,556 [0x196eec468,0x196eec47c]
+ ! 185 heap::base::BasicSlotSet<8ul>::Insert<(heap::base::BasicSlotSet<8ul>::AccessMode)1>(unsigned long) (in node) + 124,128 [0x102d84874,0x102d84878]
+ 6 ??? (in <unknown binary>) [0x138769ae0]
+ 5 Builtins_JSConstructStubGeneric (in node) + 376 [0x103505978]
+ : 2 ??? (in <unknown binary>) [0x138764f1c]
+ : | 2 Builtins_CEntry_Return1_ArgvOnStack_BuiltinExit (in node) + 84 [0x1035a5e94]
+ : | 2 v8::internal::Builtin_StringPrototypeNormalizeIntl(int, unsigned long*, v8::internal::Isolate*) (in node) + 336 [0x102c08d64]
+ : | 2 v8::internal::Intl::Normalize(v8::internal::Isolate*, v8::internal::DirectHandle<v8::internal::String>, v8::internal::DirectHandle<v8::internal::Object>) (in node) + 272 [0x102f4f278]
+ : | 2 v8::internal::Intl::ToICUUnicodeString(v8::internal::Isolate*, v8::internal::DirectHandle<v8::internal::String>, int) (in node) + 380 [0x102f4961c]
+ : 1 ??? (in <unknown binary>) [0x138764ce8]
+ : | 1 Builtins_FindOrderedHashMapEntry (in node) + 1200 [0x10356bfb0]
+ : | 1 Builtins_FindOrderedHashMapEntry (in node) + 1248 [0x10356bfe0]
+ : 1 ??? (in <unknown binary>) [0x138764e24]
+ : | 1 Builtins_FindOrderedHashMapEntry (in node) + 1036 [0x10356bf0c]
+ : | 1 v8::internal::OrderedHashMap::GetHash(v8::internal::Isolate*, unsigned long) (in node) + 32 [0x103008e60]
+ : | 1 v8::internal::Object::GetSimpleHash(v8::internal::Tagged<v8::internal::Object>) (in node) + 232 [0x102bd18e8]
+ : | 1 v8::internal::String::ComputeAndSetRawHash() (in node) + 28 [0x103025e14]
+ : | 1 v8::internal::String::ComputeAndSetRawHash(v8::internal::SharedStringAccessGuardIfNeeded const&) (in node) + 212 [0x103025f18]
+ : 1 ??? (in <unknown binary>) [0x138764a88]
+ 1 Builtins_JSConstructStubGeneric (in node) + 52 [0x103505834]
+ 1 Builtins_FastNewObject (in node) + 436 [0x103505dd4]
cc:
- #79
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗