Skip to contentSkip to conversation

new ltp lib doesn't print actual error

LTP Alexey Kodanev 3 participants 5 messages Jun 15, 2016 – Jun 20, 2016 Library code

lore
Share & tools
lore
#0 lore raw

Hi,

When running a test with the new LTP lib, noticed that if some error occurs in a library (tst_tmpdir.c), it'll print the same message:

TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: Non-NULL cleanup in newlib!

but should be:
TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: tst_tmpdir: mkdtemp(/usr/creF5DhMS) failed: EACCES

May be we should remove the strict check in tst_res.c? Otherwise we don't see the actual error.

lib/tst_res.c +0 -0
index b388d0d..dd27c54 100644
@@ -547,11 +547,6 @@ void tst_brkm_(const char *file, const int lineno, 

int ttype,

         EXPAND_VAR_ARGS(tmesg, arg_fmt, USERMESG);

         if (tst_test) {

- if (func) {
- tst_brk_(file, lineno, TBROK,
- "Non-NULL cleanup in newlib!");
- }
-

                 tst_brk_(file, lineno, ttype, "%s", tmesg);
         } else {
                 tst_brk__(file, lineno, ttype, func, "%s", tmesg);

Thanks,
Alexey

#1 lore raw

----- Original Message -----

Quoted 13 lines

From: "Alexey Kodanev" <[email protected]>
To: [email protected]
Sent: Wednesday, 15 June, 2016 7:08:11 PM
Subject: [LTP] new ltp lib doesn't print actual error

Hi,

When running a test with the new LTP lib, noticed that if some error occurs in a library (tst_tmpdir.c), it'll print the same message:

TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: Non-NULL cleanup in newlib!

Quoted 7 lines

but should be:
TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: tst_tmpdir: mkdtemp(/usr/creF5DhMS) failed: EACCES

May be we should remove the strict check in tst_res.c? Otherwise we don't see the actual error.

Or turn it into warning, so that we get both failures. tst_tmpdir() needs a fix to not pass cleanup function for newlib testcases.

lib/tst_res.c +2 -2
index b388d0d2e516..ab9759b9263b 100644
@@ -548,8 +548,8 @@ void tst_brkm_(const char *file, const int lineno, int ttype,
 
        if (tst_test) {
                if (func) {
-                       tst_brk_(file, lineno, TBROK,
-                                "Non-NULL cleanup in newlib!");
+                       tst_resm(TWARN, "Non-NULL cleanup in newlib! %s:%d",
+                               file, lineno);
                }
 
                tst_brk_(file, lineno, ttype, "%s", tmesg);
#2 lore raw

Hi,

Quoted 32 lines · Jan Stancek

----- Original Message -----

Quoted 13 lines

From: "Alexey Kodanev" <[email protected]>
To: [email protected]
Sent: Wednesday, 15 June, 2016 7:08:11 PM
Subject: [LTP] new ltp lib doesn't print actual error

Hi,

When running a test with the new LTP lib, noticed that if some error occurs in a library (tst_tmpdir.c), it'll print the same message:

TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: Non-NULL cleanup in newlib!

Quoted 7 lines

but should be:
TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: tst_tmpdir: mkdtemp(/usr/creF5DhMS) failed: EACCES

May be we should remove the strict check in tst_res.c? Otherwise we don't see the actual error.

Or turn it into warning, so that we get both failures. tst_tmpdir() needs a fix to not pass cleanup function for newlib testcases.

lib/tst_res.c +0 -0
index b388d0d2e516..ab9759b9263b 100644

lib/tst_res.c void tst_brkm_(const char *file, const int lineno, int ttype, · line 555

Quoted 10 lines
lib/tst_res.c +2 -2
@@ -548,8 +548,8 @@ void tst_brkm_(const char *file, const int lineno, int ttype,
 
         if (tst_test) {
                 if (func) {
-                       tst_brk_(file, lineno, TBROK,
-                                "Non-NULL cleanup in newlib!");
+                       tst_resm(TWARN, "Non-NULL cleanup in newlib! %s:%d",
+                               file, lineno);
                 }
 
                 tst_brk_(file, lineno, ttype, "%s", tmesg);

OK, we can do that, I just thought why we need to print it as it's not related to the test...

Best regards,
Alexey

#3 lore raw
In reply to Alexey Kodanev

Hi!

Quoted 6 lines

When running a test with the new LTP lib, noticed that if some error occurs in a library (tst_tmpdir.c), it'll print the same message:

TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: Non-NULL cleanup in newlib!

Quoted 7 lines

but should be:
TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: tst_tmpdir: mkdtemp(/usr/creF5DhMS) failed: EACCES

May be we should remove the strict check in tst_res.c? Otherwise we don't see the actual error.

Passing a cleanup callback from newlib testcase is always a mistake because it's never executed. I would prefer keeping the check in the library.

It does not matter in case of tmpdir_cleanup() since that function only prints a warning message. What about removing the tmpdir_cleanup() cleanup instead? It does not seem to be useful to me anyway.

Signature · 2 lines
Cyril Hrubis
[email protected]
#4 lore raw

Hi,

Quoted 14 lines · Cyril Hrubis

Hi!

Quoted 6 lines

When running a test with the new LTP lib, noticed that if some error occurs in a library (tst_tmpdir.c), it'll print the same message:

TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: Non-NULL cleanup in newlib!

Quoted 7 lines

but should be:
TMPDIR=/usr ./creat01
tst_tmpdir.c:155: BROK: tst_tmpdir: mkdtemp(/usr/creF5DhMS) failed: EACCES

May be we should remove the strict check in tst_res.c? Otherwise we don't see the actual error.

Quoted 7 lines

Passing a cleanup callback from newlib testcase is always a mistake because it's never executed. I would prefer keeping the check in the library.

It does not matter in case of tmpdir_cleanup() since that function only prints a warning message. What about removing the tmpdir_cleanup() cleanup instead? It does not seem to be useful to me anyway.

Agree, I've checked both old/new lib, and now it looks good. Applied patch.

Thanks,
Alexey