Skip to contentSkip to conversation

fix aio_suspend/3-1

PATCH In review Yasuaki Ishimatsu 2 participants 4 messages Jan 27, 2010 – Jan 28, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix aio_suspend/3-1

Hi all

When the aio_suspend/3-1.test ran, SIGSEGV occured with following message on my x86_64 box.

---
/bin/sh: line 38: 10675 Segmentation fault ./t0 240 conformance/interfaces/aio_suspend/3-1.test

Quoted 1 line

$COMPLOG 2>&1

---

This test does not initialize a list[1] array as follows.

---
40 int main()
...

 88         list[0] = NULL;
 89         list[2] = &aiocb[0];
 90         list[3] = NULL;
 91         list[4] = NULL;
 92         list[5] = &aiocb[1];
 93         list[6] = &aiocb[2];
 94         list[7] = NULL;

...
---

So, list[1] holds a strange value. Since aio_suspend() uses this value as address, SIGSEGV occurred.

When applying this patch, this test succeeds as follows.

---
conformance/interfaces/aio_suspend/3-1: execution: PASS
---

Index: ltp-2010-01-27/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c
===================================================================
--- ltp-2010-01-27.orig/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c

2010-01-27 11:44:30.000000000 +0900
+++ ltp-2010-01-27/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c
2010-01-27 11:45:23.000000000 +0900

@@ -82,6 +82,7 @@ int main()
}

list[0] = NULL;
+ list[1] = NULL;
list[2] = &aiocb[0];
list[3] = NULL;
list[4] = NULL;

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#1 lore raw
Quoted 43 lines · Yasuaki Ishimatsu

Hi all

When the aio_suspend/3-1.test ran, SIGSEGV occured with following message on my x86_64 box.

---
/bin/sh: line 38: 10675 Segmentation fault      ./t0 240 conformance/interfaces/aio_suspend/3-1.test

Quoted 1 line

$COMPLOG 2>&1

---

This test does not initialize a list[1] array as follows.

---
 40 int main()
...
 88         list[0] = NULL;
 89         list[2] = &aiocb[0];
 90         list[3] = NULL;
 91         list[4] = NULL;
 92         list[5] = &aiocb[1];
 93         list[6] = &aiocb[2];
 94         list[7] = NULL;
...
---

So, list[1] holds a strange value. Since aio_suspend() uses this value as address, SIGSEGV occurred.

When applying this patch, this test succeeds as follows.

---
conformance/interfaces/aio_suspend/3-1: execution: PASS
---

Index: ltp-2010-01-27/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c
===================================================================
--- ltp-2010-01-27.orig/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c

2010-01-27 11:44:30.000000000 +0900
+++ ltp-2010-01-27/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c
2010-01-27 11:45:23.000000000 +0900

Review int main() · line 88

Quoted 7 lines
(quoted diff) +1 -0
@@ -82,6 +82,7 @@ int main()
        }
 
        list[0] = NULL;
+       list[1] = NULL;
        list[2] = &aiocb[0];
        list[3] = NULL;
        list[4] = NULL;

Wouldn't it just be better to memset(&list, 0, sizeof(list)) the
array and just set that one array value to &aiocb[0]? Seems like a much better idea...
Thanks,
-Garrett

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#2 lore raw

Hi Garrett

Quoted 3 lines

Wouldn't it just be better to memset(&list, 0, sizeof(list)) the
array and just set that one array value to &aiocb[0]? Seems like a much better idea...

Thank you for your good idea.
I applied it.

Regards,
Yasuaki Ishimatsu

--------------------------------------------------------------------------
When the aio_suspend/3-1.test ran, SIGSEGV occured with following message on my x86_64 box.

---
/bin/sh: line 38: 10675 Segmentation fault ./t0 240 conformance/interfaces/aio_suspend/3-1.test
$COMPLOG 2>&1
---

This test does not initialize a list[1] array as follows.

---
40 int main()
...

  88         list[0] = NULL;
  89         list[2] = &aiocb[0];
  90         list[3] = NULL;
  91         list[4] = NULL;
  92         list[5] = &aiocb[1];
  93         list[6] = &aiocb[2];
  94         list[7] = NULL;

...
---

So, list[1] holds a strange value. Since aio_suspend() uses this value as address, SIGSEGV occurred.

When applying this patch, this test succeeds as follows.

---
conformance/interfaces/aio_suspend/3-1: execution: PASS
---

Index: ltp-2010-01-28/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c
===================================================================
--- ltp-2010-01-28.orig/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c

2010-01-28 09:10:48.000000000 +0900
+++ ltp-2010-01-28/testcases/open_posix_testsuite/conformance/interfaces/aio_suspend/3-1.c 
2010-01-28 09:11:16.000000000 +0900

@@ -81,13 +81,11 @@ int main()
}
}

- list[0] = NULL;
+ memset(&list, 0, sizeof(list));
+
list[2] = &aiocb[0];
- list[3] = NULL;
- list[4] = NULL;
list[5] = &aiocb[1];
list[6] = &aiocb[2];
- list[7] = NULL;

  	if (aio_suspend(list, NENT, NULL) != 0)
  	{

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

#3 lore raw
Quoted 8 lines · Yasuaki Ishimatsu

Hi Garrett

Quoted 3 lines

    Wouldn't it just be better to memset(&list, 0, sizeof(list)) the array and just set that one array value to &aiocb[0]? Seems like a much better idea...

Thank you for your good idea.
I applied it.

Committed -- thanks!
-Garrett

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list