Infinite recursion in IRForTarget::RegisterFunctionMetadata

Hey all,

Anybody else seeing these? I’ve got a bunch of tests failing with a few (!) of these in the call stack:

(frames below repeat tens of thousands of times)

#45756 0x00007fa60f00ea5a in IRForTarget::RegisterFunctionMetadata (this=0x7fff0096f0a0, context=…,
function_ptr=0x20a45d0, name=0x7fa5f47a0560 “_ZL6printfPKcz”)
at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Expression/IRForTarget.cpp:315
#45757 0x00007fa60f00ea5a in IRForTarget::RegisterFunctionMetadata (this=0x7fff0096f0a0, context=…,
function_ptr=0x20a45d0, name=0x7fa5f47a0560 “_ZL6printfPKcz”)
at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Expression/IRForTarget.cpp:315

(here is what drives it)

#47524 0x00007fa60f017183 in IRForTarget::runOnModule (this=0x7fff0096f0a0, llvm_module=…)

at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Expression/IRForTarget.cpp:2722
#47525 0x00007fa60f00a579 in lldb_private::ClangExpressionParser::PrepareForExecution (this=0x7fff0096f2f0,

func_addr=@0x1ff0208: 18446744073709551615, func_end=@0x1ff0210: 18446744073709551615, execution_unit_ap=std::unique_ptr<lldb_private::IRExecutionUnit> containing 0x0, exe_ctx=…,
can_interpret=@0x1ff02a8: false, execution_policy=lldb_private::eExecutionPolicyOnlyWhenNeeded)
at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Expression/ClangExpressionParser.cpp:517
#47526 0x00007fa60efd21c0 in lldb_private::ClangUserExpression::Parse (this=0x1ff01f0, error_stream=…, exe_ctx=…,
execution_policy=lldb_private::eExecutionPolicyOnlyWhenNeeded, keep_result_in_memory=true)
at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Expression/ClangUserExpression.cpp:539
#47527 0x00007fa60efd3aac in lldb_private::ClangUserExpression::Evaluate (exe_ctx=…, options=…, expr_cstr=0x1f70a08 “(int) printf(”\x68\x65\x6c\x6c\x6f\n")", expr_prefix=0x0, result_valobj_sp=…, error=…) at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Expression/ClangUserExpression.cpp:969
#47528 0x00007fa60ece67e4 in lldb_private::Target::EvaluateExpression (this=0x1e61100,
expr_cstr=0x1f70a08 “(int) printf(”\x68\x65\x6c\x6c\x6f\n")", frame=0x7fa5f4001e40, result_valobj_sp=…,
options=…) at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Target/Target.cpp:1910
#47529 0x00007fa60ef07d14 in lldb_private::CommandObjectExpression::EvaluateExpression (this=0x191d860,
expr=0x1f70a08 “(int) printf(”\x68\x65\x6c\x6c\x6f\n")", output_stream=0x1df8e70, error_stream=0x1df8ec8,
result=0x1df8e70) at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Commands/CommandObjectExpression.cpp:301
#47530 0x00007fa60ef0864a in lldb_private::CommandObjectExpression::DoExecute (this=0x191d860,
command=0x1f70a08 “(int) printf(”\x68\x65\x6c\x6c\x6f\n")", result=…)
at /mnt/ssd/work/git/llgs/llvm/tools/lldb/source/Commands/CommandObjectExpression.cpp:485

Hi Todd,

Do you have r203475 (aka git 7d55d82)? I updated LLDB for an LLVM API change and only had half of the change at first, until that rev.

-Ed

Nope, thanks Ed. I’m at 203463 (git 6e3755bab - yours!)

I’ll resync and give that a shot, thanks.

Okay - all clear. With svn r203475, all my tests went green.