nodejs/node · error

icupkg/ures_enumDependencies(%s array res=%08x)[%d].recurse(

Error message

icupkg/ures_enumDependencies(%s array res=%08x)[%d].recurse(%08x) failed

What it means

Diagnostic fprintf printed when recursive dependency enumeration of an ARRAY-type resource item fails. Analogous to error 982 but for URES_ARRAY: each array element is recursed via ures_enumDependencies, and if the child call fails, the parent logs the array resource handle and the failing index/item handle. The actual error code is propagated from the child call.

Source

Thrown at deps/icu-small/source/tools/toolutil/pkgitems.cpp:360

                }
            }
        }
        break;
    case URES_ARRAY:
        {
            /* recurse */
            int32_t count=res_countArrayItems(pResData, res);
            for(int32_t i=0; i<count; ++i) {
                Resource item=res_getArrayItem(pResData, res, i);
                ures_enumDependencies(
                        itemName, pResData,
                        item, nullptr,
                        inKey, depth+1,
                        check, context,
                        pkg,
                        pErrorCode);
                if(U_FAILURE(*pErrorCode)) {
                    fprintf(stderr, "icupkg/ures_enumDependencies(%s array res=%08x)[%d].recurse(%08x) failed\n",
                                    itemName, res, i, item);
                    break;
                }
            }
        }
        break;
    default:
        break;
    }
    return doCheckParent;
}

static void
ures_enumDependencies(const char *itemName, const UDataInfo *pInfo,
                      const uint8_t *inBytes, int32_t length,
                      CheckDependency check, void *context,
                      Package *pkg,
                      UErrorCode *pErrorCode) {

View on GitHub (pinned to 1b2de5e052)

Solutions

  1. Check stderr for the child error printed before this message and fix the root cause (likely an alias or locale ID problem in an array element).
  2. Rebuild the .res bundle from source .txt with genrb.
  3. Dump the array contents with derb to inspect the element at the logged index.
Defensive patterns

Strategy: try-catch

Try / catch

// Capture stderr to find the underlying child error before the array recurse failure
result = subprocess.run(['icupkg', '--list', 'bundle.res'], capture_output=True)
stderr_lines = result.stderr.decode().splitlines()
for i, line in enumerate(stderr_lines):
    if 'array' in line and 'recurse' in line and 'failed' in line:
        print(f'Underlying child error: {stderr_lines[i-1] if i > 0 else "unknown"}')

Prevention

When it happens

Trigger: ures_enumDependencies processes a URES_ARRAY resource, iterates via res_countArrayItems/res_getArrayItem, recurses into each element, and a child call sets U_FAILURE(*pErrorCode). The fprintf at pkgitems.cpp:360 fires and the loop breaks.

Common situations: An array element is a string or alias resource that triggers alias/locale errors in the recursive call; array data corruption from a failed or interrupted genrb build; .res format version mismatch.

Related errors


AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13). Data as JSON: /api/errors/07c7aa7417052212. Report an issue: GitHub.