diff mbox

[i-g-t] lib/igt_core: Print stacktrace in initialization/fixture blocks.

Message ID 1474359638-30596-1-git-send-email-marius.c.vlad@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marius Vlad Sept. 20, 2016, 8:20 a.m. UTC
Likely candidate for this behaviour is the igt_fixture block. Seen in the CI by
running tests/kms_psr_sink_crc which is causing segfaults in the fixture block.

While at it fix some minor printing bugs.

Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
CC: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/igt_core.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

Comments

Chris Wilson Sept. 20, 2016, 8:35 a.m. UTC | #1
On Tue, Sep 20, 2016 at 11:20:38AM +0300, Marius Vlad wrote:
> Likely candidate for this behaviour is the igt_fixture block. Seen in the CI by
> running tests/kms_psr_sink_crc which is causing segfaults in the fixture block.
> 
> While at it fix some minor printing bugs.
> 
> Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
> CC: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> @@ -1740,7 +1740,7 @@ static void fatal_sig_handler(int sig)
>  			igt_assert_eq(write(STDERR_FILENO, ".\n", 2), 2);
>  		}
>  
> -		if (in_subtest && crash_signal(sig)) {
> +		if (crash_signal(sig)) {
>  			/* Linux standard to return exit code as 128 + signal */
>  			if (!failed_one)
>  				igt_exitcode = 128 + sig;
> @@ -1749,7 +1749,8 @@ static void fatal_sig_handler(int sig)
>  #ifdef HAVE_LIBUNWIND
>  			print_backtrace_sig_safe();
>  #endif
> -			exit_subtest("CRASH");
> +			if (in_subtest)
> +				exit_subtest("CRASH");

Makes sense, I think - as much as I know this part of igt at least!
-Chris
diff mbox

Patch

diff --git a/lib/igt_core.c b/lib/igt_core.c
index dd27a22..43db468 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -1122,7 +1122,7 @@  static void
 printnum(unsigned long long num, unsigned base)
 {
 	int i = 0;
-	unsigned long long __num;
+	unsigned long long __num = num;
 
 	/* determine from where we should start dividing */
 	do {
@@ -1264,7 +1264,7 @@  static void print_backtrace_sig_safe(void)
 		unw_word_t off;
 
 		if (unw_get_proc_name(&cursor, name, 255, &off) < 0)
-			xstrlcpy(name, "<unknown>", 9);
+			xstrlcpy(name, "<unknown>", 10);
 
 		xprintf(" #%d [%s+0x%x]\n", stack_num++, name,
 				(unsigned int) off);
@@ -1740,7 +1740,7 @@  static void fatal_sig_handler(int sig)
 			igt_assert_eq(write(STDERR_FILENO, ".\n", 2), 2);
 		}
 
-		if (in_subtest && crash_signal(sig)) {
+		if (crash_signal(sig)) {
 			/* Linux standard to return exit code as 128 + signal */
 			if (!failed_one)
 				igt_exitcode = 128 + sig;
@@ -1749,7 +1749,8 @@  static void fatal_sig_handler(int sig)
 #ifdef HAVE_LIBUNWIND
 			print_backtrace_sig_safe();
 #endif
-			exit_subtest("CRASH");
+			if (in_subtest)
+				exit_subtest("CRASH");
 		}
 		break;
 	}