Konstantin Belousov <kostikbel_at_gmail.com> wrote on
Date: Sat, 22 Nov 2025 18:45:32 UTC :

> On Sat, Nov 22, 2025 at 07:01:03PM +0100, Michal Meloun wrote:
> > > Would you please gather the same ddebugging info, with this patch applied?
> > Oups, sorry.
> > In meantime, next round with he vm_map patch  finished successfully.
> 
> It was still the case of coalescing previous entry and the mapping.
> 
> It is weird, the patch ensures that there is no pages in the object
> backing the new region, and due to the ensured properties of the object,
> there should be no way to create pages under us.
> I am almost sure that the provided patch is correct, but it might be
> some additional cases that I miss.
> 
> Please apply the following debugging patch, it includes the vm_object'
> part.  Instead of allowing the corruption in userspace, kernel should
> panic now.  Can you confirm that?
> 
> diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
> index 6b09552c5fee..76808b5ad7f1 100644
> --- a/sys/vm/vm_map.c
> +++ b/sys/vm/vm_map.c
> @@ -1743,6 +1743,27 @@ vm_map_insert1(vm_map_t map, vm_object_t object, 
> vm_ooffset_t offset,
>           (vm_size_t)(prev_entry->end - prev_entry->start),
>           (vm_size_t)(end - prev_entry->end), cred != NULL &&
>           (protoeflags & MAP_ENTRY_NEEDS_COPY) == 0)) {
> +             vm_object_t obj = prev_entry->object.vm_object;
> +             if (obj != NULL) {
> +                     struct pctrie_iter pages;
> +                     vm_page_t p;
> +
> +                     vm_page_iter_init(&pages, obj);
> +                     p = vm_radix_iter_lookup_ge(&pages,
> +                         OFF_TO_IDX(prev_entry->offset +
> +                         prev_entry->end - prev_entry->start));
> +                     if (p != NULL) {
> +                             KASSERT(p->pindex >= 
> OFF_TO_IDX(prev_entry->offset +
> +                                 prev_entry->end - prev_entry->start +
> +                                 end - start),
> +                                 ("FOUND page %p pindex %#jx "
> +                                 "e %#jx %#jx %#jx %#jx",
> +                                 p, p->pindex, (uintmax_t)prev_entry->offset,
> +                                 (uintmax_t)prev_entry->end,
> +                                 (uintmax_t)prev_entry->start,
> +                                 (uintmax_t)(end - start)));
> +                     }
> +             }
>               /*
>                * We were able to extend the object.  Determine if we
>                * can extend the previous map entry to include the
> diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
> index 5b4517d2bf0c..9bb4e54edd96 100644
> --- a/sys/vm/vm_object.c
> +++ b/sys/vm/vm_object.c
> @@ -2189,13 +2189,19 @@ vm_object_coalesce(vm_object_t prev_object, 
> vm_ooffset_t prev_offset,
>       next_size >>= PAGE_SHIFT;
>       next_pindex = OFF_TO_IDX(prev_offset) + prev_size;
>  
> -     if (prev_object->ref_count > 1 &&
> -         prev_object->size != next_pindex &&
> +     if (prev_object->ref_count > 1 ||
> +         prev_object->size != next_pindex ||
>           (prev_object->flags & OBJ_ONEMAPPING) == 0) {
>               VM_OBJECT_WUNLOCK(prev_object);
>               return (FALSE);
>       }
>  
> +     KASSERT(next_pindex + next_size > prev_object->size,
> +         ("vm_object_coalesce: "
> +         "obj %p next_pindex %#jx next_size %#jx obj_size %#jx",
> +         prev_object, (uintmax_t)next_pindex, (uintmax_t)next_size,
> +         (uintmax_t)prev_object->size));
> +
>       /*
>        * Account for the charge.
>        */
> @@ -2222,26 +2228,13 @@ vm_object_coalesce(vm_object_t prev_object, 
> vm_ooffset_t prev_offset,
>        * Remove any pages that may still be in the object from a previous
>        * deallocation.
>        */
> -     if (next_pindex < prev_object->size) {
> -             vm_object_page_remove(prev_object, next_pindex, next_pindex +
> -                 next_size, 0);
> -#if 0
> -             if (prev_object->cred != NULL) {
> -                     KASSERT(prev_object->charge >=
> -                         ptoa(prev_object->size - next_pindex),
> -                         ("object %p overcharged 1 %jx %jx", prev_object,
> -                             (uintmax_t)next_pindex, (uintmax_t)next_size));
> -                     prev_object->charge -= ptoa(prev_object->size -
> -                         next_pindex);
> -             }
> -#endif
> -     }
> +     vm_object_page_remove(prev_object, next_pindex, next_pindex +
> +         next_size, 0);
>  
>       /*
>        * Extend the object if necessary.
>        */
> -     if (next_pindex + next_size > prev_object->size)
> -             prev_object->size = next_pindex + next_size;
> +     prev_object->size = next_pindex + next_size;
>  
>       VM_OBJECT_WUNLOCK(prev_object);
>       return (TRUE);


For the i386 chroot test context, it still fails like before:

. . .
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/ExtractAPI/ExtractAPIConsumer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/ExtractAPI/Serialization/SymbolGraphSerializer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/ExtractAPI/TypedefUnderlyingTypeResolver.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/AffectedRangeManager.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/BreakableToken.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/ContinuationIndenter.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/DefinitionBlockSeparator.pico
Building /usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/Format.pico
Building /usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/FormatToken.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/FormatTokenLexer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/IntegerLiteralSeparatorFixer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/MacroCallReconstructor.pico
Building /usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/MacroExpander.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/NamespaceEndCommentsFixer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/ObjCPropertyAttributeOrderFixer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/QualifierAlignmentFixer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/SortJavaScriptImports.pico
Building /usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/TokenAnalyzer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/TokenAnnotator.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/UnwrappedLineFormatter.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/UnwrappedLineParser.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/UsingDeclarationsSorter.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Format/WhitespaceManager.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/ASTConsumers.pico
Building /usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/ASTMerge.pico
Building /usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/ASTUnit.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/ChainedDiagnosticConsumer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/ChainedIncludesSource.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/CompilerInstance.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/CompilerInvocation.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/CreateInvocationFromCommandLine.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/DependencyFile.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/DependencyGraph.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/DiagnosticRenderer.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/FrontendAction.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/FrontendActions.pico
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/FrontendOptions.pico
<jemalloc>: /usr/src/contrib/jemalloc/include/jemalloc/internal/ehooks.h:170: 
Failed assertion: "p[i] == 0"
Building 
/usr/obj/usr/src/i386.i386/lib/clang/libclang/Frontend/HeaderIncludeGen.pico
Abort trap (core dumped)
*** [ExtractAPI/ExtractAPIConsumer.pico] Error code 134
. . .


For reference (from the amd64 boot context):

# strings /boot/kernel.jemallocfailure/kernel | grep 'FOUND page %p pindex %#jx'
FOUND page %p pindex %#jx e %#jx %#jx %#jx %#jx

# uname -apKU
FreeBSD 7950X3D-UFS 16.0-CURRENT FreeBSD 16.0-CURRENT #3: Sat Nov 22 11:42:13 
PST 2025     root@7950X3D-UFS:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 
amd64 1600004 1600004

The backtrace looks like:

(lldb) bt
* thread #1, name = 'c++', stop reason = signal SIGABRT
  * frame #0: 0x24bd378b libsys.so.7`__sys_thr_kill at thr_kill.S:4
    frame #1: 0x2ab2231b libc.so.7`__raise(s=6) at raise.c:48:10
    frame #2: 0x2abcc73b libc.so.7`abort at abort.c:61:8
    frame #3: 0x2ac10440 libc.so.7`ehooks_debug_zero_check(addr=<unavailable>, 
size=<unavailable>) at ehooks.h:0
    frame #4: 0x2ac0ccfa libc.so.7`__je_extent_alloc_wrapper [inlined] 
ehooks_alloc(tsdn=<unavailable>, ehooks=<unavailable>, new_addr=<unavailable>, 
size=<unavailable>, alignment=<unavailable>, zero=0xffff7c7b, 
commit=<unavailable>) at ehooks.h:208:3
    frame #5: 0x2ac0cc5a libc.so.7`__je_extent_alloc_wrapper(tsdn=0x2adf90a0, 
pac=0x2b0015e4, ehooks=0x2b000080, new_addr=0x00000000, size=20480, 
alignment=4096, zero=true, commit=0xffff7ce3, growing_retained=<unavailable>) 
at jemalloc_extent.c:1003:15
    frame #6: 0x2ac0c58e libc.so.7`__je_ecache_alloc_grow(tsdn=0x2adf90a0, 
pac=0x2b0015e4, ehooks=0x2b000080, ecache=0x2b0036d0, expand_edata=0x00000000, 
size=20480, alignment=4096, zero=<unavailable>, guarded=<unavailable>) at 
jemalloc_extent.c:126:11
    frame #7: 0x2ac3c73f libc.so.7`pac_alloc_impl [inlined] 
pac_alloc_real(tsdn=<unavailable>, pac=<unavailable>, ehooks=<unavailable>, 
size=<unavailable>, alignment=4096, zero=<unavailable>, guarded=<unavailable>) 
at jemalloc_pac.c:124:11
    frame #8: 0x2ac3c696 libc.so.7`pac_alloc_impl(tsdn=0x2adf90a0, 
self=0x2b0015e4, size=20480, alignment=4096, zero=<unavailable>, 
guarded=<unavailable>, frequent_reuse=<unavailable>, 
deferred_work_generated=<unavailable>) at jemalloc_pac.c:178:11
    frame #9: 0x2ac3afe0 libc.so.7`__je_pa_alloc [inlined] 
pai_alloc(tsdn=<unavailable>, self=<unavailable>, size=<unavailable>, 
alignment=<unavailable>, zero=<unavailable>, guarded=<unavailable>, 
frequent_reuse=<unavailable>, deferred_work_generated=<unavailable>) at 
pai.h:43:9
    frame #10: 0x2ac3afc9 libc.so.7`__je_pa_alloc(tsdn=0x2adf90a0, 
shard=0x2b0015d8, size=20480, alignment=4096, slab=<unavailable>, szind=25, 
zero=<unavailable>, guarded=<unavailable>, deferred_work_generated=0xffff7dc7) 
at jemalloc_pa.c:139:11
    frame #11: 0x2abec82b libc.so.7`arena_slab_alloc(tsdn=<unavailable>, 
arena=<unavailable>, binind=25, binshard=0, bin_info=0x2ac71658) at 
jemalloc_arena.c:839:18
    frame #12: 0x2abebdaa 
libc.so.7`__je_arena_cache_bin_fill_small(tsdn=0x2adf90a0, arena=0x2b000500, 
cache_bin=0x2adf94e8, cache_bin_info=0x2b0004b2, binind=25, nfill=10) at 
jemalloc_arena.c:1034:16
    frame #13: 0x2ac2b737 
libc.so.7`__je_tcache_alloc_small_hard(tsdn=0x2adf90a0, arena=0x2b000500, 
tcache=0x2adf92f0, cache_bin=0x2adf94e8, binind=25, tcache_success=0xffff7e8b) 
at jemalloc_tcache.c:238:2
    frame #14: 0x2abed8e3 libc.so.7`arena_malloc [inlined] 
tcache_alloc_small(tsd=<unavailable>, arena=0x2b000500, tcache=<unavailable>, 
size=<unavailable>, binind=<unavailable>, zero=<unavailable>, slow_path=true) 
at tcache_inlines.h:68:9
    frame #15: 0x2abed83e libc.so.7`arena_malloc(tsdn=<unavailable>, 
arena=<unavailable>, size=2560, ind=25, zero=<unavailable>, tcache=0x2adf92f0, 
slow_path=true) at arena_inlines_b.h:151:11
    frame #16: 0x2abed610 libc.so.7`__je_arena_palloc(tsdn=0x2adf90a0, 
arena=0x00000000, usize=2560, alignment=4, zero=<unavailable>, 
tcache=0x2adf92f0) at jemalloc_arena.c:1224:9
    frame #17: 0x2abe7838 libc.so.7`ipalloct [inlined] 
ipallocztm(tsdn=<unavailable>, usize=2560, alignment=4, zero=<unavailable>, 
tcache=0x2adf92f0, is_internal=false, arena=0x00000000) at 
jemalloc_internal_inlines_c.h:80:8
    frame #18: 0x2abe7705 libc.so.7`ipalloct(tsdn=<unavailable>, usize=2560, 
alignment=4, zero=<unavailable>, tcache=0x2adf92f0, arena=0x00000000) at 
jemalloc_internal_inlines_c.h:91:9
    frame #19: 0x2abe754c libc.so.7`imalloc_body [inlined] 
imalloc_no_sample(sopts=0xffff7f9c, dopts=0xffff7f7c, tsd=0x2adf90a0, 
size=2304, usize=2560, ind=0) at jemalloc_jemalloc.c:2398:10
    frame #20: 0x2abe753f libc.so.7`imalloc_body(sopts=<unavailable>, 
dopts=<unavailable>, tsd=0x2adf90a0) at jemalloc_jemalloc.c:2577:16
    frame #21: 0x2abdae88 libc.so.7`imalloc(sopts=<unavailable>, 
dopts=<unavailable>) at tsd.h:0:2
    frame #22: 0x2abdb3ef libc.so.7`__aligned_alloc(alignment=4, size=2304) at 
jemalloc_jemalloc.c:2821:2
    frame #23: 0x2aa69777 libc++.so.1`operator new(unsigned int, 
std::align_val_t) [inlined] 
std::__1::__libcpp_aligned_alloc[abi:se190107](__alignment=4, 
__size=<unavailable>) at aligned_alloc.h:43:10
    frame #24: 0x2aa69768 libc++.so.1`operator new(unsigned int, 
std::align_val_t) [inlined] operator_new_aligned_impl(size=<unavailable>, 
alignment=4) at new.cpp:129:15
    frame #25: 0x2aa69748 libc++.so.1`operator new(size=2304, alignment=4) at 
new.cpp:141:13
    frame #26: 0x28a7905b libprivatellvm.so.19`llvm::allocate_buffer(unsigned 
int, unsigned int) at MemAlloc.cpp:16:10
    frame #27: 0x26fa313e libprivatellvm.so.19`::grow() [inlined] 
allocateBuckets at DenseMap.h:915:9
    frame #28: 0x26fa312d libprivatellvm.so.19`::grow() at DenseMap.h:849:5
    frame #29: 0x26fa30a5 
libprivatellvm.so.19`::InsertIntoBucketImpl<llvm::AssertingVH<const 
llvm::BasicBlock> >() [inlined] grow at DenseMap.h:580:36
    frame #30: 0x26fa309e 
libprivatellvm.so.19`::InsertIntoBucketImpl<llvm::AssertingVH<const 
llvm::BasicBlock> >() at DenseMap.h:0
    frame #31: 0x26fa2f51 libprivatellvm.so.19`::FindAndConstruct() [inlined] 
InsertIntoBucket<llvm::AssertingVH<const llvm::BasicBlock> > at 
DenseMap.h:590:17
    frame #32: 0x26fa2f48 libprivatellvm.so.19`::FindAndConstruct() at 
DenseMap.h:381:13
    frame #33: 0x26f9f3fe libprivatellvm.so.19`::initializeRPOT() [inlined] 
operator[] at DenseMap.h:385:12
    frame #34: 0x26f9f3f0 libprivatellvm.so.19`::initializeRPOT() at 
BlockFrequencyInfoImpl.h:1173:5
    frame #35: 0x26f99bbd libprivatellvm.so.19`::calculate() at 
BlockFrequencyInfoImpl.h:1119:3
    frame #36: 0x26f992a0 libprivatellvm.so.19`::calculate() at 
BlockFrequencyInfo.cpp:189:8
    frame #37: 0x26f9bc3a 
libprivatellvm.so.19`llvm::BlockFrequencyAnalysis::run(llvm::Function&, 
llvm::AnalysisManager<llvm::Function>&) at BlockFrequencyInfo.cpp:338:7
    frame #38: 0x2880e51b libprivatellvm.so.19`::run() at 
PassManagerInternal.h:320:14
    frame #39: 0x283b7e8b libprivatellvm.so.19`::getResultImpl() at 
PassManagerImpl.h:156:35
    frame #40: 0x26f9c0a6 
libprivatellvm.so.19`::getResult<llvm::BlockFrequencyAnalysis>() at 
PassManager.h:409:9
    frame #41: 0x29b202aa libprivatellvm.so.19`::run() at Inliner.cpp:385:16
    frame #42: 0x2882dbad 
libprivatellvm.so.19`llvm::detail::PassModel<llvm::LazyCallGraph::SCC, 
llvm::InlinerPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, 
llvm::LazyCallGraph&>, llvm::LazyCallGraph&, 
llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, 
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, 
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) at PassManagerInternal.h:90:17
    frame #43: 0x26fd7933 libprivatellvm.so.19`::run() at 
CGSCCPassManager.cpp:87:38
    frame #44: 0x2881959d 
libprivatellvm.so.19`llvm::detail::PassModel<llvm::LazyCallGraph::SCC, 
llvm::PassManager<llvm::LazyCallGraph::SCC, 
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, 
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, 
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, 
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, 
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, 
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) at PassManagerInternal.h:90:17
    frame #45: 0x26fda8e4 libprivatellvm.so.19`::run() at 
CGSCCPassManager.cpp:413:38
    frame #46: 0x28849d1d 
libprivatellvm.so.19`llvm::detail::PassModel<llvm::LazyCallGraph::SCC, 
llvm::DevirtSCCRepeatedPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, 
llvm::LazyCallGraph&>, llvm::LazyCallGraph&, 
llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, 
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, 
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) at PassManagerInternal.h:90:17
    frame #47: 0x26fd901f libprivatellvm.so.19`::run() at 
CGSCCPassManager.cpp:274:44
    frame #48: 0x288198a7 
libprivatellvm.so.19`llvm::detail::PassModel<llvm::Module, 
llvm::ModuleToPostOrderCGSCCPassAdaptor, 
llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, 
llvm::AnalysisManager<llvm::Module>&) at PassManagerInternal.h:90:17
    frame #49: 0x283b43bd libprivatellvm.so.19`::run() at 
PassManagerImpl.h:81:38
    frame #50: 0x29b224ef libprivatellvm.so.19`::run() at Inliner.cpp:631:7
    frame #51: 0x288235a7 
libprivatellvm.so.19`llvm::detail::PassModel<llvm::Module, 
llvm::ModuleInlinerWrapperPass, 
llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, 
llvm::AnalysisManager<llvm::Module>&) at PassManagerInternal.h:90:17
    frame #52: 0x283b43bd libprivatellvm.so.19`::run() at 
PassManagerImpl.h:81:38
    frame #53: 0x228e956a libprivateclang.so.19`::RunOptimizationPipeline() at 
BackendUtil.cpp:1114:9
    frame #54: 0x228e000c libprivateclang.so.19`::EmitBackendOutput() [inlined] 
EmitAssembly at BackendUtil.cpp:1179:3
    frame #55: 0x228df8a5 libprivateclang.so.19`::EmitBackendOutput() at 
BackendUtil.cpp:1341:13
    frame #56: 0x22d84b4d libprivateclang.so.19`::HandleTranslationUnit() at 
CodeGenAction.cpp:354:3
    frame #57: 0x234f63bd libprivateclang.so.19`::ParseAST() at 
ParseAST.cpp:184:13
    frame #58: 0x2335bdef libprivateclang.so.19`::ExecuteAction() at 
FrontendAction.cpp:1192:3
    frame #59: 0x22d8ad1d libprivateclang.so.19`::ExecuteAction() at 
CodeGenAction.cpp:1144:30
    frame #60: 0x2335b650 libprivateclang.so.19`::Execute() at 
FrontendAction.cpp:1078:8
    frame #61: 0x232bc3ac libprivateclang.so.19`::ExecuteAction() at 
CompilerInstance.cpp:1061:33
    frame #62: 0x233f3b7c libprivateclang.so.19`::ExecuteCompilerInvocation() 
at ExecuteCompilerInvocation.cpp:280:25
    frame #63: 0x0040df8f c++`::cc1_main() at cc1_main.cpp:284:15
    frame #64: 0x0041c927 c++`::ExecuteCC1Tool() at driver.cpp:215:12
    frame #65: 0x22f460a6 libprivateclang.so.19`::callback_fn<(lambda at 
/usr/src/contrib/llvm-project/clang/lib/Driver/Job.cpp:440:22)>() [inlined] 
operator() at STLFunctionalExtras.h:68:12
    frame #66: 0x22f46097 libprivateclang.so.19`::callback_fn<(lambda at 
/usr/src/contrib/llvm-project/clang/lib/Driver/Job.cpp:440:22)>() [inlined] 
operator() at Job.cpp:440:34
    frame #67: 0x22f46094 libprivateclang.so.19`::callback_fn<(lambda at 
/usr/src/contrib/llvm-project/clang/lib/Driver/Job.cpp:440:22)>() at 
STLFunctionalExtras.h:45:12
    frame #68: 0x28a3f834 libprivatellvm.so.19`::RunSafely() [inlined] 
operator() at STLFunctionalExtras.h:68:12
    frame #69: 0x28a3f82f libprivatellvm.so.19`::RunSafely() at 
CrashRecoveryContext.cpp:426:3
    frame #70: 0x22f456d4 libprivateclang.so.19`::Execute() at Job.cpp:440:12
    frame #71: 0x22f00688 libprivateclang.so.19`::ExecuteCommand() at 
Compilation.cpp:199:15
    frame #72: 0x22f0097e libprivateclang.so.19`::ExecuteJobs() at 
Compilation.cpp:253:19
    frame #73: 0x22f21e9c libprivateclang.so.19`::ExecuteCompilation() at 
Driver.cpp:1943:5
    frame #74: 0x0041bfdd c++`::clang_main() at driver.cpp:391:21
    frame #75: 0x0041a387 c++`main at clang-driver.cpp:17:10
    frame #76: 0x2aaf8820 libc.so.7`__libc_start1(argc=71, argv=0xffffc28c, 
env=0xffffc3ac, cleanup=(ld-elf.so.1`rtld_nop_exit at rtld.c:3602), 
mainX=(c++`main at clang-driver.cpp:15)) at libc_start1.c:180:7
    frame #77: 0x0040c438 c++`_start at crt1_s.S:84

===
Mark Millard
marklmi at yahoo.com


Reply via email to