linux: Remove the kernel's " (deleted)" suffix from module names [crashpad/crashpad : main]

8 views
Skip to first unread message

Will Harris (Gerrit)

unread,
Jun 18, 2026, 2:26:15 PM (8 days ago) Jun 18
to aj cote, Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
Attention needed from Joshua Peraza, Mark Mentovai and aj cote

Will Harris added 1 comment

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Will Harris . unresolved

please file a chromium issue and reference it in this CL, describing the defect in full.

Open in Gerrit

Related details

Attention is currently required from:
  • Joshua Peraza
  • Mark Mentovai
  • aj cote
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: crashpad/crashpad
Gerrit-Branch: main
Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
Gerrit-Change-Number: 7963584
Gerrit-PatchSet: 1
Gerrit-Owner: aj cote <ajc...@telcobridges.com>
Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
Gerrit-Reviewer: Will Harris <w...@chromium.org>
Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
Gerrit-Attention: aj cote <ajc...@telcobridges.com>
Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
Gerrit-Comment-Date: Thu, 18 Jun 2026 18:26:12 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Will Harris (Gerrit)

unread,
Jun 18, 2026, 5:12:10 PM (8 days ago) Jun 18
to aj cote, Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
Attention needed from Joshua Peraza, Mark Mentovai and aj cote

Will Harris added 4 comments

Patchset-level comments
File-level comment, Patchset 2 (Latest):
Will Harris . resolved

mark might be better suited to review this as it's Linux

File snapshot/linux/process_reader_linux.cc
Line 75, Patchset 2 (Latest): const auto path = base::StringPrintf("/proc/%d/root", pid) + mapping.name;
Will Harris . unresolved

are you sure all `mapping.name` will start with a slash?

Line 78, Patchset 2 (Latest): statbuf.st_dev == mapping.device && statbuf.st_ino == mapping.inode) {
Will Harris . unresolved

does this check work on all filesystems? e.g. I think on Btrfs and OverlayFS this is not always true. e.g. synthetic inode? would it be better to inspect /proc/[pid]/map_files to make sure it's actually the same file?

File snapshot/linux/process_reader_linux_test.cc
Line 704, Patchset 2 (Latest):// Resolves any symlinked components of |path|. The kernel reports canonical
Will Harris . unresolved

nit: chromium uses backtick (\`) instead of `|` for quoting arguments to functions now.

Open in Gerrit

Related details

Attention is currently required from:
  • Joshua Peraza
  • Mark Mentovai
  • aj cote
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: crashpad/crashpad
Gerrit-Branch: main
Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
Gerrit-Change-Number: 7963584
Gerrit-PatchSet: 2
Gerrit-Owner: aj cote <ajc...@telcobridges.com>
Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
Gerrit-Reviewer: Will Harris <w...@chromium.org>
Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
Gerrit-Attention: aj cote <ajc...@telcobridges.com>
Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
Gerrit-Comment-Date: Thu, 18 Jun 2026 21:12:07 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

aj cote (Gerrit)

unread,
Jun 18, 2026, 8:46:56 PM (8 days ago) Jun 18
to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
Attention needed from Joshua Peraza, Mark Mentovai and Will Harris

aj cote added 1 comment

Patchset-level comments
File-level comment, Patchset 1:
Will Harris . resolved

please file a chromium issue and reference it in this CL, describing the defect in full.

aj cote

Done!

Open in Gerrit

Related details

Attention is currently required from:
  • Joshua Peraza
  • Mark Mentovai
  • Will Harris
Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: crashpad/crashpad
    Gerrit-Branch: main
    Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
    Gerrit-Change-Number: 7963584
    Gerrit-PatchSet: 2
    Gerrit-Owner: aj cote <ajc...@telcobridges.com>
    Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
    Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
    Gerrit-Reviewer: Will Harris <w...@chromium.org>
    Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
    Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
    Gerrit-Attention: Will Harris <w...@chromium.org>
    Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
    Gerrit-Comment-Date: Thu, 18 Jun 2026 18:49:46 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Will Harris <w...@chromium.org>
    unsatisfied_requirement
    open
    diffy

    aj cote (Gerrit)

    unread,
    Jun 19, 2026, 10:43:12 AM (7 days ago) Jun 19
    to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
    Attention needed from Joshua Peraza, Mark Mentovai and Will Harris

    aj cote added 4 comments

    Patchset-level comments
    File-level comment, Patchset 4 (Latest):
    aj cote . resolved

    Thanks for the review. Addressed in the latest patchset:

    • Reworked to use /proc/[pid]/map_files (and the backing file's link count st_nlink). The path reconstruction is also dropped.
    • Added tests: a no-SONAME deleted-module case plus a suffix-absence assertion across the self-modules. Whether that path is actually exercised depends on the dynamic loader (a no-op under glibc's link-map naming, a real check on loaders that leave it empty), which the test comment calls out.
    File snapshot/linux/process_reader_linux.cc
    Line 75, Patchset 2: const auto path = base::StringPrintf("/proc/%d/root", pid) + mapping.name;
    Will Harris . resolved

    are you sure all `mapping.name` will start with a slash?

    aj cote

    With the new patchset and the map_files approach, it no longer reconstructs a path from the name.

    Line 78, Patchset 2: statbuf.st_dev == mapping.device && statbuf.st_ino == mapping.inode) {
    Will Harris . resolved

    does this check work on all filesystems? e.g. I think on Btrfs and OverlayFS this is not always true. e.g. synthetic inode? would it be better to inspect /proc/[pid]/map_files to make sure it's actually the same file?

    aj cote

    You're right!

    As proposed, switched to /proc/[pid]/map_files

    File snapshot/linux/process_reader_linux_test.cc
    Line 704, Patchset 2:// Resolves any symlinked components of |path|. The kernel reports canonical
    Will Harris . resolved

    nit: chromium uses backtick (\`) instead of `|` for quoting arguments to functions now.

    aj cote

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Joshua Peraza
    • Mark Mentovai
    • Will Harris
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: crashpad/crashpad
    Gerrit-Branch: main
    Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
    Gerrit-Change-Number: 7963584
    Gerrit-PatchSet: 4
    Gerrit-Owner: aj cote <ajc...@telcobridges.com>
    Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
    Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
    Gerrit-Reviewer: Will Harris <w...@chromium.org>
    Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
    Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
    Gerrit-Attention: Will Harris <w...@chromium.org>
    Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
    Gerrit-Comment-Date: Fri, 19 Jun 2026 14:43:09 +0000
    unsatisfied_requirement
    open
    diffy

    Will Harris (Gerrit)

    unread,
    Jun 22, 2026, 12:20:15 PM (4 days ago) Jun 22
    to aj cote, Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
    Attention needed from Joshua Peraza, Mark Mentovai and aj cote

    Will Harris added 2 comments

    File snapshot/linux/process_reader_linux.cc
    Line 79, Patchset 6 (Latest): base::StringPrintf("/proc/%d/map_files/%" PRIx64 "-%" PRIx64,
    Will Harris . unresolved

    might not work before kernel 4.4 but I am pretty sure we don't support kernels that far back?

    Line 82, Patchset 6 (Latest): stat(entry.c_str(), &statbuf) == 0 && statbuf.st_nlink > 0) {
    Will Harris . unresolved

    `stat` can fail, and I think if it does then the value returned is wrong, it should return the original name?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Joshua Peraza
    • Mark Mentovai
    • aj cote
    Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 6
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Comment-Date: Mon, 22 Jun 2026 16:20:12 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      Mark Mentovai (Gerrit)

      unread,
      Jun 22, 2026, 12:42:27 PM (4 days ago) Jun 22
      to aj cote, Will Harris, Joshua Peraza, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Joshua Peraza and aj cote

      Mark Mentovai added 5 comments

      File snapshot/linux/process_reader_linux.cc
      Line 69, Patchset 6 (Latest): static constexpr std::string_view kDeletedSuffix = " (deleted)";
      Mark Mentovai . unresolved

      Why a `string_view` and not a `char[]`?

      Line 78, Patchset 6 (Latest): const std::string entry =
      Mark Mentovai . unresolved

      Don’t use a `std::string` for this. You can size a `char[]` properly and use `snprintf`.

      Line 81, Patchset 6 (Latest): if (struct stat statbuf{};
      Mark Mentovai . unresolved

      We don’t usually do this.

      1. Move the declaration outside of the `if`.
      2. No need to initialize `statbuf`.
      3. Use underscores to separate words: `stat_buf`.

      Line 82, Patchset 6 (Latest): stat(entry.c_str(), &statbuf) == 0 && statbuf.st_nlink > 0) {
      Mark Mentovai . unresolved

      Explain the `statbuf.st_nlink` check.

      File snapshot/linux/test_modules.h
      Line 28, Patchset 6 (Latest)://! \param module_soname The SONAME for the module. If empty, the module is
      //! built without a DT_SONAME.
      Mark Mentovai . unresolved

      This change (and the one in the .cc file) seems unrelated. Can you break it into its own commit with its own description?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Joshua Peraza
      • aj cote
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 6
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Comment-Date: Mon, 22 Jun 2026 16:42:23 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      aj cote (Gerrit)

      unread,
      Jun 22, 2026, 1:50:41 PM (4 days ago) Jun 22
      to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Joshua Peraza, Mark Mentovai and Will Harris

      aj cote added 7 comments

      File snapshot/linux/process_reader_linux.cc
      Line 69, Patchset 6: static constexpr std::string_view kDeletedSuffix = " (deleted)";
      Mark Mentovai . resolved

      Why a `string_view` and not a `char[]`?

      aj cote

      Done; switched to a stack char entry[64] with snprintf.

      On sizing it properly: the longest string the format can produce is 62 bytes:

      • /proc/ : 6
      • %d (pid) : 11 (32-bit int; worst case 11 is the type-safe bound)
      • /map_files/ : 11
      • %PRIx64 (base) : 16
      • `-` : 1
      • %PRIx64 (end) : 16
      • NUL : 1

      Total 62, so char[64] is provably sufficient

      Line 78, Patchset 6: const std::string entry =
      Mark Mentovai . resolved

      Don’t use a `std::string` for this. You can size a `char[]` properly and use `snprintf`.

      aj cote

      Done

      Line 79, Patchset 6: base::StringPrintf("/proc/%d/map_files/%" PRIx64 "-%" PRIx64,
      Will Harris . unresolved

      might not work before kernel 4.4 but I am pretty sure we don't support kernels that far back?

      aj cote

      FYI: `/proc/[pid]/map_files/` has existed since Linux 3.3 (2012).

      The one real caveat is that map_files/ is gated on the kernel config CONFIG_CHECKPOINT_RESTORE; without it the directory is absent regardless of version. That's now handled by the stat-failure path (see the change for your other comment): if stat fails for any reason, we keep the name exactly as the kernel reported it rather than stripping.

      Line 81, Patchset 6: if (struct stat statbuf{};
      Mark Mentovai . resolved

      We don’t usually do this.

      1. Move the declaration outside of the `if`.
      2. No need to initialize `statbuf`.
      3. Use underscores to separate words: `stat_buf`.

      aj cote

      Done

      Line 82, Patchset 6: stat(entry.c_str(), &statbuf) == 0 && statbuf.st_nlink > 0) {
      Will Harris . resolved

      `stat` can fail, and I think if it does then the value returned is wrong, it should return the original name?

      aj cote

      Done

      Line 82, Patchset 6: stat(entry.c_str(), &statbuf) == 0 && statbuf.st_nlink > 0) {
      Mark Mentovai . resolved

      Explain the `statbuf.st_nlink` check.

      aj cote

      I sharpened the existing comment and moved it directly above the check.

      Detail:

      `/proc/[pid]/map_files/<start>-<end>` is a symlink to the inode backing the mapping. stat() follows it, so `stat_buf.st_nlink` is the inode's hard-link count and independent of path resolution or filesystem quirks.

      • st_nlink == 0 : the inode has no remaining directory entries, i.e. the file was unlinked. The " (deleted)" is therefore the kernel's annotation
      • st_nlink > 0 : the file still exists on disk, so the suffix is a genuine part of its name
      File snapshot/linux/test_modules.h
      Line 28, Patchset 6://! \param module_soname The SONAME for the module. If empty, the module is

      //! built without a DT_SONAME.
      Mark Mentovai . unresolved

      This change (and the one in the .cc file) seems unrelated. Can you break it into its own commit with its own description?

      aj cote

      DetermineMappingName (the suffix-stripping this CL adds) is only reached on the no-SONAME branch; a module with a SONAME is named by the SONAME and never sees the suffix. So a module built without a DT_SONAME is the only way to exercise the fix, which is exactly what the test_modules change enables. I'd prefer to keep it with the fix it supports (or having it cancelled along it).

      tl;dr: I'm validating the lib path too, not only the executable one.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Joshua Peraza
      • Mark Mentovai
      • Will Harris
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 7
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
      Gerrit-Attention: Will Harris <w...@chromium.org>
      Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Comment-Date: Mon, 22 Jun 2026 17:50:38 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Mark Mentovai <ma...@chromium.org>
      Comment-In-Reply-To: Will Harris <w...@chromium.org>
      unsatisfied_requirement
      open
      diffy

      Mark Mentovai (Gerrit)

      unread,
      Jun 22, 2026, 2:01:03 PM (4 days ago) Jun 22
      to aj cote, Will Harris, Joshua Peraza, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Joshua Peraza, Will Harris and aj cote

      Mark Mentovai added 1 comment

      File snapshot/linux/test_modules.h
      Line 28, Patchset 6://! \param module_soname The SONAME for the module. If empty, the module is
      //! built without a DT_SONAME.
      Mark Mentovai . resolved

      This change (and the one in the .cc file) seems unrelated. Can you break it into its own commit with its own description?

      aj cote

      DetermineMappingName (the suffix-stripping this CL adds) is only reached on the no-SONAME branch; a module with a SONAME is named by the SONAME and never sees the suffix. So a module built without a DT_SONAME is the only way to exercise the fix, which is exactly what the test_modules change enables. I'd prefer to keep it with the fix it supports (or having it cancelled along it).

      tl;dr: I'm validating the lib path too, not only the executable one.

      Mark Mentovai

      DetermineMappingName (the suffix-stripping this CL adds) is only reached on the no-SONAME branch; a module with a SONAME is named by the SONAME and never sees the suffix. So a module built without a DT_SONAME is the only way to exercise the fix, which is exactly what the test_modules change enables. I'd prefer to keep it with the fix it supports (or having it cancelled along it).

      tl;dr: I'm validating the lib path too, not only the executable one.

      Thanks for the explanation.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Joshua Peraza
      • Will Harris
      • aj cote
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 7
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Will Harris <w...@chromium.org>
      Gerrit-Attention: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Comment-Date: Mon, 22 Jun 2026 18:00:59 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Mark Mentovai <ma...@chromium.org>
      Comment-In-Reply-To: aj cote <ajc...@telcobridges.com>
      unsatisfied_requirement
      open
      diffy

      Will Harris (Gerrit)

      unread,
      Jun 24, 2026, 5:15:23 PM (2 days ago) Jun 24
      to aj cote, Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from aj cote

      Will Harris added 1 comment

      Patchset-level comments
      File-level comment, Patchset 7 (Latest):
      Will Harris . resolved

      hi, please address mark's comments then come back for further review.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • aj cote
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 7
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Comment-Date: Wed, 24 Jun 2026 21:15:20 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      aj cote (Gerrit)

      unread,
      Jun 25, 2026, 6:30:53 AM (yesterday) Jun 25
      to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Will Harris

      aj cote added 1 comment

      Patchset-level comments
      Will Harris . resolved

      hi, please address mark's comments then come back for further review.

      aj cote

      Which one I missed?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Will Harris
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 7
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Will Harris <w...@chromium.org>
      Gerrit-Comment-Date: Thu, 25 Jun 2026 10:30:49 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Will Harris <w...@chromium.org>
      unsatisfied_requirement
      open
      diffy

      Mark Mentovai (Gerrit)

      unread,
      Jun 25, 2026, 10:01:14 AM (yesterday) Jun 25
      to aj cote, Will Harris, Joshua Peraza, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Will Harris and aj cote

      Mark Mentovai added 7 comments

      File snapshot/linux/process_reader_linux.cc
      Line 65, Patchset 7 (Latest):std::string DetermineMappingName(pid_t pid,
      const MemoryMap::Mapping& mapping) {
      Mark Mentovai . unresolved

      It actually seems like this would be a better fit as a method on `MemoryMap::Mapping`. In particular, if the `Mapping` is created with knowledge of the pid, it becomes a really straightforward interface to use.

      That, in turn, makes it easy to answer the next question: is this deleted-name handling something that `MemoryMap::FindMappingWithName` should do too? (Maybe, maybe not—it only has one very specific Android-only caller.)

      Line 66, Patchset 7 (Latest): const MemoryMap::Mapping& mapping) {
      Mark Mentovai . unresolved

      There are only two callers, and both of them are holding a `MemoryMap::Mapping const *`. Rather than forcing them to do a goofy `*dereference`, this should just accept the pointer.

      Line 75, Patchset 7 (Latest): char entry[64];
      Mark Mentovai . unresolved

      More of a path than an entry, really.

      Line 76, Patchset 7 (Latest): snprintf(entry, sizeof(entry), "/proc/%d/map_files/%" PRIx64 "-%" PRIx64,
      pid, mapping.range.Base(), mapping.range.End());
      Mark Mentovai . unresolved

      Do we have reasonable assurance based on how the caller prepared its `MemoryMap::Mapping` that the start and end addresses will match a node in /proc/${pid}/map_files?

      Line 80, Patchset 7 (Latest): // map_files symlink to the mapped inode). Zero means the file was unlinked, so
      // the suffix is the kernel's annotation and is stripped below; a nonzero count
      // means the file still exists and is genuinely named with the suffix, so the
      Mark Mentovai . unresolved

      Remain within 80 characters.

      Line 90, Patchset 7 (Latest): return mapping.name.substr(0,
      mapping.name.size() - (sizeof(kDeletedSuffix) - 1));
      Mark Mentovai . unresolved

      Here too. Run `git cl format`.

      Line 91, Patchset 7 (Latest): mapping.name.size() - (sizeof(kDeletedSuffix) - 1));
      Mark Mentovai . unresolved

      Using `sizeof(x) - 1` to size a string literal is somewhat common, but more error-prone. For example, here, it’s dependent on getting the parentheses placed correctly, and given the other parentheses nearby, isn’t the easiest thing to see or verify immediately.

      But the `sizeof` thing is actually unnecessary. If you just write `strlen`, the compiler will intelligently recognize that you’re applying it to a literal, and substitute the correct string length without any runtime calls into libc. You get the same exact object code with `strlen(x)` as with `sizeof(x) - 1`.

      https://godbolt.org/z/K1ThbezWv

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Will Harris
      • aj cote
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 7
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Will Harris <w...@chromium.org>
      Gerrit-Comment-Date: Thu, 25 Jun 2026 14:01:07 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      aj cote (Gerrit)

      unread,
      Jun 25, 2026, 10:38:16 PM (14 hours ago) Jun 25
      to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Mark Mentovai and Will Harris

      aj cote added 7 comments

      File snapshot/linux/process_reader_linux.cc
      Line 65, Patchset 7:std::string DetermineMappingName(pid_t pid,
      const MemoryMap::Mapping& mapping) {
      Mark Mentovai . unresolved

      It actually seems like this would be a better fit as a method on `MemoryMap::Mapping`. In particular, if the `Mapping` is created with knowledge of the pid, it becomes a really straightforward interface to use.

      That, in turn, makes it easy to answer the next question: is this deleted-name handling something that `MemoryMap::FindMappingWithName` should do too? (Maybe, maybe not—it only has one very specific Android-only caller.)

      aj cote

      Having worked through this, I think the honest position is that there are a few defensible shapes here, and the choice between them is an ownership decision I would rather you make than have me impose. The behavior and the tests come out identical in every case; the only thing that varies is where the name resolution lives and how the pid reaches it. For the two "method" forms it reduces to a single question: whether a `/proc/map_files` lookup belongs on the `Mapping` value or on the `MemoryMap` that owns the procfs connection. I do not have a confident basis to settle that, and since you own the long-term shape of this code, I would rather lay out the options and let you pick.

      The three viable shapes:

      • The free function `DetermineMappingName(pid, mapping)`.
      • A method on the region: `Mapping::GetName(pid)`, with the pid passed in.
      • A method on the owner: `MemoryMap::GetMappingName(mapping)`, with the pid read from the connection.

      (I also considered storing the pid on every `Mapping`, and a back-reference from `Mapping` to its owner, and dropped both: the first duplicates process-scoped state on every region, the second inverts the composition and adds lifetime coupling.)

      My own preference is the free function, for two reasons. First, the two inputs are genuinely orthogonal: the pid is process-scoped (one per map) and the range is region-scoped (one per mapping), so passing both explicitly mirrors where the data actually lives instead of making one object carry the other. Second, I cannot currently justify whether this operation belongs to `MemoryMap` or to `Mapping`, and the free function avoids committing to an ownership I am unsure of. If you would rather it be a method, the choice between the two method forms is exactly that ownership question, and I am happy to follow your call.

      Line 66, Patchset 7: const MemoryMap::Mapping& mapping) {
      Mark Mentovai . resolved

      There are only two callers, and both of them are holding a `MemoryMap::Mapping const *`. Rather than forcing them to do a goofy `*dereference`, this should just accept the pointer.

      aj cote

      I prefer the reference, as done with FindFilePossibleMmapStarts(const Mapping&) and ReverseIteratorFrom(const Mapping&), but it is your call.

      Line 75, Patchset 7: char entry[64];
      Mark Mentovai . resolved

      More of a path than an entry, really.

      aj cote

      Done

      Line 76, Patchset 7: snprintf(entry, sizeof(entry), "/proc/%d/map_files/%" PRIx64 "-%" PRIx64,
      pid, mapping.range.Base(), mapping.range.End());
      Mark Mentovai . unresolved

      Do we have reasonable assurance based on how the caller prepared its `MemoryMap::Mapping` that the start and end addresses will match a node in /proc/${pid}/map_files?

      aj cote

      Yes. A Mapping is a verbatim `/proc/[pid]/maps` line: `ParseMapsLine` sets range to the line's own start/end, and both callers get a const Mapping* out of mappings_, never a synthesized one. The kernel keys each map_files/<start>-<end> node by that same pair, so they match by construction. We only look it up when the name ends in " (deleted)", which is set only on file-backed mappings,and those always have a map_files entry.

      Any miss (e.g. no CONFIG_CHECKPOINT_RESTORE, or stat fails) just keeps the kernel's name, so never a wrong one.

      Line 80, Patchset 7: // map_files symlink to the mapped inode). Zero means the file was unlinked, so

      // the suffix is the kernel's annotation and is stripped below; a nonzero count
      // means the file still exists and is genuinely named with the suffix, so the
      Mark Mentovai . resolved

      Remain within 80 characters.

      aj cote

      Done

      Line 90, Patchset 7: return mapping.name.substr(0,

      mapping.name.size() - (sizeof(kDeletedSuffix) - 1));
      Mark Mentovai . resolved

      Here too. Run `git cl format`.

      aj cote

      Done

      Line 91, Patchset 7: mapping.name.size() - (sizeof(kDeletedSuffix) - 1));
      Mark Mentovai . resolved

      Using `sizeof(x) - 1` to size a string literal is somewhat common, but more error-prone. For example, here, it’s dependent on getting the parentheses placed correctly, and given the other parentheses nearby, isn’t the easiest thing to see or verify immediately.

      But the `sizeof` thing is actually unnecessary. If you just write `strlen`, the compiler will intelligently recognize that you’re applying it to a literal, and substitute the correct string length without any runtime calls into libc. You get the same exact object code with `strlen(x)` as with `sizeof(x) - 1`.

      https://godbolt.org/z/K1ThbezWv

      aj cote

      Done. I was not aware compilers fold strlen on a constant string into a compile-time constant.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Mark Mentovai
      • Will Harris
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 8
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
      Gerrit-Attention: Will Harris <w...@chromium.org>
      Gerrit-Comment-Date: Fri, 26 Jun 2026 02:38:14 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Mark Mentovai <ma...@chromium.org>
      unsatisfied_requirement
      open
      diffy

      aj cote (Gerrit)

      unread,
      8:08 AM (4 hours ago) 8:08 AM
      to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Mark Mentovai and Will Harris

      aj cote added 1 comment

      File snapshot/linux/process_reader_linux.cc
      Line 65, Patchset 7:std::string DetermineMappingName(pid_t pid,
      const MemoryMap::Mapping& mapping) {
      Mark Mentovai . unresolved

      It actually seems like this would be a better fit as a method on `MemoryMap::Mapping`. In particular, if the `Mapping` is created with knowledge of the pid, it becomes a really straightforward interface to use.

      That, in turn, makes it easy to answer the next question: is this deleted-name handling something that `MemoryMap::FindMappingWithName` should do too? (Maybe, maybe not—it only has one very specific Android-only caller.)

      aj cote

      Having worked through this, I think the honest position is that there are a few defensible shapes here, and the choice between them is an ownership decision I would rather you make than have me impose. The behavior and the tests come out identical in every case; the only thing that varies is where the name resolution lives and how the pid reaches it. For the two "method" forms it reduces to a single question: whether a `/proc/map_files` lookup belongs on the `Mapping` value or on the `MemoryMap` that owns the procfs connection. I do not have a confident basis to settle that, and since you own the long-term shape of this code, I would rather lay out the options and let you pick.

      The three viable shapes:

      • The free function `DetermineMappingName(pid, mapping)`.
      • A method on the region: `Mapping::GetName(pid)`, with the pid passed in.
      • A method on the owner: `MemoryMap::GetMappingName(mapping)`, with the pid read from the connection.

      (I also considered storing the pid on every `Mapping`, and a back-reference from `Mapping` to its owner, and dropped both: the first duplicates process-scoped state on every region, the second inverts the composition and adds lifetime coupling.)

      My own preference is the free function, for two reasons. First, the two inputs are genuinely orthogonal: the pid is process-scoped (one per map) and the range is region-scoped (one per mapping), so passing both explicitly mirrors where the data actually lives instead of making one object carry the other. Second, I cannot currently justify whether this operation belongs to `MemoryMap` or to `Mapping`, and the free function avoids committing to an ownership I am unsure of. If you would rather it be a method, the choice between the two method forms is exactly that ownership question, and I am happy to follow your call.

      aj cote

      Summary of where this can live, for you to pick. The lookup needs two inputs from different scopes: the region's range (on the `Mapping`) and the target pid (one per map, on the connection). All three options below leave `Mapping::name` as the raw kernel string, since other readers rely on it unchanged, and all keep a best-effort, fail-safe direct `stat()` for now.

      • *Option 0 — free function `DetermineMappingName(pid, mapping)` (current patch set)**
      • Answers: comment #2 (takes the pointer, no `*deref`). Does not answer #1 (not a method).
      • Compromise: passes both inputs, and the `/proc` I/O lives in the consumer rather than the procfs-owning class.
      • Accept: a non-member helper with no encapsulation, in exchange for the most explicit shape and zero new API on either class.
      • *Option 2 — method on `Mapping`: `mapping->GetName(pid)`**
      • Answers: comments #1 and #2 (a method; `->` with no `*deref`); no `Mapping` parameter, so the pointer-vs-reference question does not arise.
      • Compromise: the caller supplies the pid; a value struct gains an I/O method; no `INITIALIZATION_STATE_DCHECK_VALID` (that guard is on `MemoryMap`).
      • Accept: a syscall's worth of behavior on the `Mapping` value type.
      • *Option 3 — method on `MemoryMap`: `memory_map.GetMappingName(mapping)`**
      • Answers: comments #1 and #2; keeps `Mapping` a behavior-free value; reads the pid internally so it can never be mismatched; allows `INITIALIZATION_STATE_DCHECK_VALID`.
      • Compromise: keeps a `Mapping` argument; a `Mapping*` parameter departs from the sibling region-taking methods, which use `const Mapping&` (`FindFilePossibleMmapStarts`, `ReverseIteratorFrom`).
      • Accept: name resolution is an owner operation rather than a `Mapping` method.

      One cross-cutting finding for the decision: this `stat()` is the only direct `/proc` access in this layer that bypasses `connection_` (every other target read goes through the connection, and the broker for sandboxed targets). Option 3 places the lookup next to `connection_`, so if the sandboxed case ever needs stripping too, switching to a brokered stat would be an internal change with no caller churn. That is a follow-up, not this patch; I note it only because it bears on where the function belongs.

      Happy to go with whichever you prefer.

      Gerrit-Comment-Date: Fri, 26 Jun 2026 12:08:04 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Mark Mentovai <ma...@chromium.org>
      Comment-In-Reply-To: aj cote <ajc...@telcobridges.com>
      unsatisfied_requirement
      open
      diffy

      Mark Mentovai (Gerrit)

      unread,
      10:44 AM (2 hours ago) 10:44 AM
      to aj cote, Will Harris, Joshua Peraza, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from aj cote

      Mark Mentovai added 1 comment

      File snapshot/linux/process_reader_linux.cc
      Mark Mentovai

      Thanks for the detailed analysis.

      I still believe that `Mapping::GetName` _without_ supplying a `pid` argument would be cleanest from an interface perspective, but recognize that realizing that goal without introducing new layering quirks would require a medium-sized reimagining of how `MemoryMap` and `Mapping` relate to one another. We don‘t need to answer that here.

      Putting the interfaces to the kernel close together is what originally motivated me to raise the issue, and option 3 is cleanest from that perspective, so let’s give that a try and see how it works out.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • aj cote
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 8
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Comment-Date: Fri, 26 Jun 2026 14:44:06 +0000
      unsatisfied_requirement
      open
      diffy

      Mark Mentovai (Gerrit)

      unread,
      11:39 AM (1 hour ago) 11:39 AM
      to aj cote, Will Harris, Joshua Peraza, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from aj cote

      Mark Mentovai added 3 comments

      File util/linux/memory_map.h
      Line 85, Patchset 9 (Latest): //! running program's binary is replaced on disk. A file may also be genuinely
      Mark Mentovai . unresolved

      removed or replaced

      File util/linux/memory_map.cc
      Line 335, Patchset 9 (Latest): // The kernel exports no constant for the suffix. Refer to /proc/[pid]/maps
      // in proc(5) and the PROCMAP_QUERY ioctl in linux/fs.h.
      Mark Mentovai . unresolved

      Kernel source is more authoritative than anything else, so if you’re giving any references at all, “linux fs/d_path.c d_path” should be among them.

      File util/linux/memory_map_test.cc
      Line 177, Patchset 9 (Latest):TEST(MemoryMap, MappingNameKeepsRealDeletedSuffix) {
      Mark Mentovai . resolved

      Good tests. Thanks for including these.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • aj cote
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 9
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: aj cote <ajc...@telcobridges.com>
      Gerrit-Comment-Date: Fri, 26 Jun 2026 15:39:35 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      aj cote (Gerrit)

      unread,
      12:03 PM (25 minutes ago) 12:03 PM
      to Will Harris, Joshua Peraza, Mark Mentovai, crashpa...@luci-project-accounts.iam.gserviceaccount.com, crashp...@chromium.org
      Attention needed from Mark Mentovai

      aj cote added 2 comments

      File util/linux/memory_map.h
      Line 85, Patchset 9: //! running program's binary is replaced on disk. A file may also be genuinely
      Mark Mentovai . resolved

      removed or replaced

      aj cote

      Done

      File util/linux/memory_map.cc
      Line 335, Patchset 9: // The kernel exports no constant for the suffix. Refer to /proc/[pid]/maps

      // in proc(5) and the PROCMAP_QUERY ioctl in linux/fs.h.
      Mark Mentovai . resolved

      Kernel source is more authoritative than anything else, so if you’re giving any references at all, “linux fs/d_path.c d_path” should be among them.

      aj cote

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Mark Mentovai
      Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: crashpad/crashpad
      Gerrit-Branch: main
      Gerrit-Change-Id: Ibfa073c1dad95674d6f16fa7147fa92f65fabf12
      Gerrit-Change-Number: 7963584
      Gerrit-PatchSet: 10
      Gerrit-Owner: aj cote <ajc...@telcobridges.com>
      Gerrit-Reviewer: Joshua Peraza <jpe...@chromium.org>
      Gerrit-Reviewer: Mark Mentovai <ma...@chromium.org>
      Gerrit-Reviewer: Will Harris <w...@chromium.org>
      Gerrit-Reviewer: aj cote <ajc...@telcobridges.com>
      Gerrit-Attention: Mark Mentovai <ma...@chromium.org>
      Gerrit-Comment-Date: Fri, 26 Jun 2026 16:03:18 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Mark Mentovai <ma...@chromium.org>
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages