nodejs/node · error

U_FILE_ACCESS_ERROR

U_FILE_ACCESS_ERROR

Error message

icupkg: unable to open list file \"%s\"\n

What it means

readList fopen()s the list file (a .txt list) for reading and gets NULL back, so it deletes the Package, prints the list name, and exit(U_FILE_ACCESS_ERROR). This is the list-open failure for text-style lists (distinct from a .dat package path).

Source

Thrown at deps/icu-small/source/tools/toolutil/pkg_icu.cpp:86

    if (listPkg == nullptr) {
        listPkg=new Package();
        if(listPkg==nullptr) {
            fprintf(stderr, "icupkg: not enough memory\n");
            exit(U_MEMORY_ALLOCATION_ERROR);
        }
    }

    listNameEnd=strchr(listname, 0);
    if(isListTextFile(listname)) {
        // read the list file
        char line[1024];
        char *end;
        const char *start;

        file=fopen(listname, "r");
        if(file==nullptr) {
            fprintf(stderr, "icupkg: unable to open list file \"%s\"\n", listname);
            delete listPkg;
            exit(U_FILE_ACCESS_ERROR);
        }

        while(fgets(line, sizeof(line), file)) {
            // remove comments
            end=strchr(line, '#');
            if(end!=nullptr) {
                *end=0;
            } else {
                // remove trailing CR LF
                end=strchr(line, 0);
                while(line<end && (*(end-1)=='\r' || *(end-1)=='\n')) {
                    *--end=0;
                }
            }

            // check first non-whitespace character and

View on GitHub (pinned to 1b2de5e052)

Solutions

  1. Verify the list file is readable: `test -r "$LIST"` before calling icupkg.
  2. Use an absolute path to the list file, or run icupkg from the right directory.
  3. Regenerate the list file if it was never produced.
  4. Fix ownership/permissions on the list file.

Example fix

# before
icupkg ./missing.txt out.dat   # 'unable to open list file'
# after
test -r ./out/icudata.txt && icupkg ./out/icudata.txt out.dat || { echo regenerate list; exit 1; }
Defensive patterns

Strategy: validation

Validate before calling

# verify the text list is readable before invoking icupkg
test -n "$LIST" && test -r "$LIST" || { echo "list '$LIST' missing/unreadable" >&2; exit 1; }

Prevention

When it happens

Trigger: Passing icupkg a list file ending in a text suffix that does not exist or is not readable. The guard `if(file==nullptr)` after `fopen(listname, "r")` fires before any line is parsed.

Common situations: Typo in the list path; running icupkg from the wrong cwd with a relative list; permissions on the list file; the list was generated into a different out dir than passed.

Related errors


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