diff --git a/app/core/gimpbacktrace-linux.c b/app/core/gimpbacktrace-linux.c
index 9e4f38d12b..a76b5be2ce 100644
--- a/app/core/gimpbacktrace-linux.c
+++ b/app/core/gimpbacktrace-linux.c
@@ -585,6 +585,9 @@ gimp_backtrace_get_address_info (guintptr address,
info->symbol_address = (guintptr) dl_info.dli_saddr;
#endif
+ info->source_file[0] = '\0';
+ info->source_line = 0;
+
return TRUE;
}
diff --git a/app/core/gimpbacktrace.h b/app/core/gimpbacktrace.h
index ea676a2db5..a4ea2c2a30 100644
--- a/app/core/gimpbacktrace.h
+++ b/app/core/gimpbacktrace.h
@@ -31,6 +31,9 @@ struct _GimpBacktraceAddressInfo
gchar symbol_name[256];
guintptr symbol_address;
+
+ gchar source_file[256];
+ gint source_line;
};
diff --git a/app/widgets/gimpdashboard.c b/app/widgets/gimpdashboard.c
index 7c3c90211c..f9b358a3f0 100644
--- a/app/widgets/gimpdashboard.c
+++ b/app/widgets/gimpdashboard.c
@@ -3899,6 +3899,43 @@ gimp_dashboard_log_write_address_map (GimpAsync *async,
}
}
+ if (n == 0 || strcmp (info->source_file, prev_info->source_file))
+ {
+ NONEMPTY ();
+
+ if (info->source_file[0])
+ {
+ gimp_dashboard_log_printf (dashboard,
+ "");
+ gimp_dashboard_log_print_escaped (dashboard,
+ info->source_file);
+ gimp_dashboard_log_printf (dashboard,
+ "\n");
+ }
+ else
+ {
+ gimp_dashboard_log_printf (dashboard,
+ "\n");
+ }
+ }
+
+ if (n == 0 || info->source_line != prev_info->source_line)
+ {
+ NONEMPTY ();
+
+ if (info->source_line)
+ {
+ gimp_dashboard_log_printf (dashboard,
+ "%d\n",
+ info->source_line);
+ }
+ else
+ {
+ gimp_dashboard_log_printf (dashboard,
+ "\n");
+ }
+ }
+
if (empty)
{
gimp_dashboard_log_printf (dashboard,