[PATCH v2][makedumpfile 04/14] dwarf_info: Fix a infinite recursion bug for rust symbols

YAMAZAKI MASAMITSU(山崎 真光) yamazaki-msmt at nec.com
Fri Oct 24 00:20:22 PDT 2025


Liu

Thanks your new patch.
I think the patche is better than before. So I ack this patch.

As you pointed out, if exists Rust modules then processing for
dwarf occur infinite loop. This will add the function to the
stack and cause an error. I also have resarch this bug, but
cannot find the root cause.

Therefore, I think it would be better not to support Rust now.
However, the cause should eventually be revealed.

Acked-by: YAMAZAKI Masamitsu <yamazaki-msmt at nec.com>

Thanks,
Masa

On 2025/10/22 15:38, HAGIO KAZUHITO(萩尾 一仁) wrote:
> On 2025/10/21 7:24, Tao Liu wrote:
>> There is an infinite recursion bug noticed in rust symbols. The root cause is
>> unclear to me. This patch will avoid the bug by skip the rust
>> CompileUnits, since currently we don't need to deal with rust symbols.
>>
>> Signed-off-by: Tao Liu <ltao at redhat.com>
>> Suggested-by: Kazuhito Hagio <k-hagio-ab at nec.com>
> For applying this 04/14 patch separately before the 1.7.8 release, with
> adding the following note to the man page:
>
> --- a/makedumpfile.8.in
> +++ b/makedumpfile.8.in
> @@ -80,6 +80,7 @@ nested loops to traverse and erase kernel data. --eppic requires
>    can be built from makedumpfile source. Refer to
>    \fBhttp://code.google.com/p/eppic/\fR to build eppic library \fBlibeppic.a\fR
>    and for more information on writing eppic macros.
> +NOTE: currently Rust is not supported in this function.
>    .PP
>    To analyze the first kernel's memory usage, makedumpfile can refer to
>    \fIVMCOREINFO\fR instead of \fIVMLINUX\fR. \fIVMCOREINFO\fR contains the first
>
>
> Acked-by: Kazuhito Hagio <k-hagio-ab at nec.com>
>
> Thanks,
> Kazu
>
>> ---
>>    dwarf_info.c | 7 +++++++
>>    1 file changed, 7 insertions(+)
>>
>> diff --git a/dwarf_info.c b/dwarf_info.c
>> index a3a2fd6..14cf7ca 100644
>> --- a/dwarf_info.c
>> +++ b/dwarf_info.c
>> @@ -1007,6 +1007,13 @@ get_debug_info(void)
>>    			ERRMSG("Can't get CU die.\n");
>>    			goto out;
>>    		}
>> +
>> +		/* NOTE: currently Rust is not supported. */
>> +		if (dwarf_srclang(&cu_die) == DW_LANG_Rust) {
>> +			off = next_off;
>> +			continue;
>> +		}
>> +
>>    		search_die_tree(&cu_die, &found);
>>    		if (found)
>>    			break;


More information about the kexec mailing list