xpmem: Fix deadlock in xpmem_remove_process_memory_range()
Refs: #1330 Change-Id: Ib62e3a7fe2811577ba8cabf174f64827e65c422c
This commit is contained in:
22
test/issues/1330/README
Normal file
22
test/issues/1330/README
Normal file
@ -0,0 +1,22 @@
|
||||
【Issue#1330 動作確認】
|
||||
□ テスト内容
|
||||
1. xpmemの基本操作の確認
|
||||
mckernel/test/xpmemのテストを実行し、xpmemの基本操作が
|
||||
正常に動作することを確認する
|
||||
テスト内容の詳細はmckernel/test/xpmem/README を参照
|
||||
|
||||
□ 実行手順
|
||||
1. mckernel/test/xpmem に移動する
|
||||
1. xpmemのインストールディレクトリをMakefileとgo_test.sh中のXPMEM_DIRに記載する
|
||||
2. xpmemのビルドディレクトリをgo_test.sh中のXPMEM_BUILD_DIRに記載する
|
||||
3. 下記の手順でテストを実行する
|
||||
$ make test
|
||||
|
||||
McKernelのインストール先や、OSTEST, LTPの配置場所は、
|
||||
$HOME/.mck_test_config を参照している
|
||||
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
|
||||
$HOMEにコピーし、適宜編集する
|
||||
|
||||
□ 実行結果
|
||||
x86_64_result.log, aarch64_result.log 参照。
|
||||
すべての項目をPASSしていることを確認。
|
||||
151
test/issues/1330/aarch64_result.log
Normal file
151
test/issues/1330/aarch64_result.log
Normal file
@ -0,0 +1,151 @@
|
||||
*** XPMEM_TESTSUITE start *******************************
|
||||
XPMEM version = 26003
|
||||
|
||||
==== test_base STARTS ====
|
||||
xpmem_proc1: mypid = 3962
|
||||
xpmem_proc1: sharing 262144 bytes
|
||||
xpmem_proc1: segid = 200000f7a at 0x100000210000
|
||||
|
||||
xpmem_proc2: mypid = 4161
|
||||
xpmem_proc2: segid = 200000f7a
|
||||
xpmem_proc2: attached at 0x100000210000
|
||||
xpmem_proc2: adding 1 to all elems
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_base PASSED ====
|
||||
|
||||
==== test_two_attach STARTS ====
|
||||
xpmem_proc1: mypid = 4472
|
||||
xpmem_proc1: sharing 262144 bytes
|
||||
xpmem_proc1: segid = 200001178 at 0x100000210000
|
||||
|
||||
xpmem_proc2: mypid = 4670
|
||||
xpmem_proc2: segid = 200001178
|
||||
xpmem_proc2: attached at 0x100000210000
|
||||
xpmem_proc2: attached at 0x100000250000
|
||||
xpmem_proc2: adding 1 to all elems using 0x100000210000
|
||||
xpmem_proc2: adding 1 to all elems using 0x100000250000
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_two_attach PASSED ====
|
||||
|
||||
==== test_two_shares STARTS ====
|
||||
xpmem_proc1: mypid = 4871
|
||||
xpmem_proc1: sharing 2 segments, 262144 bytes each
|
||||
xpmem_proc1: segid[0] = 200001307 at 0x100000210000
|
||||
xpmem_proc1: segid[1] = 400001307 at 0x100000250000
|
||||
|
||||
xpmem_proc2: mypid = 5068
|
||||
xpmem_proc2: segid[0] = 200001307
|
||||
xpmem_proc2: segid[1] = 400001307
|
||||
xpmem_proc2: data[0] attached at 0x100000210000
|
||||
xpmem_proc2: data[1] attached at 0x100000250000
|
||||
xpmem_proc2: adding 1 to all elems using 0x100000210000
|
||||
xpmem_proc2: adding 1 to all elems using 0x100000250000
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_two_shares PASSED ====
|
||||
|
||||
==== test_fork STARTS ====
|
||||
xpmem_proc1: mypid = 5271
|
||||
xpmem_proc1: sharing 262144 bytes
|
||||
xpmem_proc1: segid = 200001497 at 0x100000210000
|
||||
|
||||
xpmem_proc2: mypid = 5468
|
||||
xpmem_proc2: segid = 200001497
|
||||
xpmem_proc2: attached at 0x100000220000
|
||||
xpmem_proc2: reading to pin pages
|
||||
xpmem_proc2: waiting for COW...
|
||||
|
||||
xpmem_proc1: forking a child
|
||||
xpmem_proc1: adding 1 to all elems to induce COW
|
||||
|
||||
xpmem_child: hello from pid 5789
|
||||
|
||||
xpmem_proc1: give control back to xpmem_proc2
|
||||
|
||||
xpmem_proc2: adding 1 to all elems
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_fork PASSED ====
|
||||
|
||||
*** XTP_001 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get
|
||||
[OK] xpmem_attach
|
||||
[OK] xpmem_detach
|
||||
[OK] xpmem_remove
|
||||
*** XTP_001 PASSED
|
||||
|
||||
*** XTP_002 start ***
|
||||
[OK] xpmem_make in child
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] xpmem_detach in child
|
||||
[OK] xpmem_remove in child
|
||||
*** XTP_002 PASSED
|
||||
|
||||
*** XTP_003 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] xpmem_detach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_003 PASSED
|
||||
|
||||
*** XTP_004 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] xpmem_detach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_004 PASSED
|
||||
|
||||
*** XTP_005 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_005 PASSED
|
||||
|
||||
*** XTP_006 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child failed (parent process exited already
|
||||
*** XTP_006 PASSED
|
||||
|
||||
*** XTP_007 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_007 PASSED
|
||||
|
||||
*** XTP_901 start ***
|
||||
[OK] xpmem_make failed (invalid address)
|
||||
[OK] xpmem_make succeed(do twice to same address)
|
||||
*** XTP_901 PASSED
|
||||
|
||||
*** XTP_902 start ***
|
||||
[OK] xpmem_get in child failed (invalid segid)
|
||||
[OK] xpmem_get in child (do twice to same segid
|
||||
*** XTP_902 PASSED
|
||||
|
||||
*** XTP_903 start ***
|
||||
[OK] xpmem_attach in childi failed (invalid apid)
|
||||
[OK] xpmem_attach in child succeed (do twice to same apid)
|
||||
*** XTP_903 PASSED
|
||||
|
||||
*** XTP_904 start ***
|
||||
[OK] xpmem_detach in child succeed (invalid address)
|
||||
[OK] xpmem_detach in child succeed (do twice to same address)
|
||||
*** XTP_904 PASSED
|
||||
|
||||
*** XTP_905 start ***
|
||||
[OK] xpmem_remove failed (invalid segid)
|
||||
[OK] xpmem_remove failed (do twice to same segid)
|
||||
*** XTP_905 PASSED
|
||||
|
||||
151
test/issues/1330/x86_64_result.log
Normal file
151
test/issues/1330/x86_64_result.log
Normal file
@ -0,0 +1,151 @@
|
||||
*** XPMEM_TESTSUITE start *******************************
|
||||
XPMEM version = 26003
|
||||
|
||||
==== test_base STARTS ====
|
||||
xpmem_proc1: mypid = 4598
|
||||
xpmem_proc1: sharing 16384 bytes
|
||||
xpmem_proc1: segid = 2000011f6 at 0x2aaaaafee000
|
||||
|
||||
xpmem_proc2: mypid = 5018
|
||||
xpmem_proc2: segid = 2000011f6
|
||||
xpmem_proc2: attached at 0x2aaaaafee000
|
||||
xpmem_proc2: adding 1 to all elems
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_base PASSED ====
|
||||
|
||||
==== test_two_attach STARTS ====
|
||||
xpmem_proc1: mypid = 5438
|
||||
xpmem_proc1: sharing 16384 bytes
|
||||
xpmem_proc1: segid = 20000153e at 0x2aaaaafee000
|
||||
|
||||
xpmem_proc2: mypid = 5858
|
||||
xpmem_proc2: segid = 20000153e
|
||||
xpmem_proc2: attached at 0x2aaaaafee000
|
||||
xpmem_proc2: attached at 0x2aaaaaff2000
|
||||
xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000
|
||||
xpmem_proc2: adding 1 to all elems using 0x2aaaaaff2000
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_two_attach PASSED ====
|
||||
|
||||
==== test_two_shares STARTS ====
|
||||
xpmem_proc1: mypid = 6278
|
||||
xpmem_proc1: sharing 2 segments, 16384 bytes each
|
||||
xpmem_proc1: segid[0] = 200001886 at 0x2aaaaafee000
|
||||
xpmem_proc1: segid[1] = 400001886 at 0x2aaaaaff2000
|
||||
|
||||
xpmem_proc2: mypid = 6698
|
||||
xpmem_proc2: segid[0] = 200001886
|
||||
xpmem_proc2: segid[1] = 400001886
|
||||
xpmem_proc2: data[0] attached at 0x2aaaaafee000
|
||||
xpmem_proc2: data[1] attached at 0x2aaaaaff2000
|
||||
xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000
|
||||
xpmem_proc2: adding 1 to all elems using 0x2aaaaaff2000
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_two_shares PASSED ====
|
||||
|
||||
==== test_fork STARTS ====
|
||||
xpmem_proc1: mypid = 7118
|
||||
xpmem_proc1: sharing 16384 bytes
|
||||
xpmem_proc1: segid = 200001bce at 0x2aaaaafee000
|
||||
|
||||
xpmem_proc2: mypid = 7538
|
||||
xpmem_proc2: segid = 200001bce
|
||||
xpmem_proc2: attached at 0x2aaaaafef000
|
||||
xpmem_proc2: reading to pin pages
|
||||
xpmem_proc2: waiting for COW...
|
||||
|
||||
xpmem_proc1: forking a child
|
||||
xpmem_proc1: adding 1 to all elems to induce COW
|
||||
|
||||
xpmem_proc1: give control back to xpmem_proc2
|
||||
|
||||
xpmem_child: hello from pid 7958
|
||||
|
||||
xpmem_proc2: adding 1 to all elems
|
||||
|
||||
xpmem_proc1: verifying data...done
|
||||
==== test_fork PASSED ====
|
||||
|
||||
*** XTP_001 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get
|
||||
[OK] xpmem_attach
|
||||
[OK] xpmem_detach
|
||||
[OK] xpmem_remove
|
||||
*** XTP_001 PASSED
|
||||
|
||||
*** XTP_002 start ***
|
||||
[OK] xpmem_make in child
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] xpmem_detach in child
|
||||
[OK] xpmem_remove in child
|
||||
*** XTP_002 PASSED
|
||||
|
||||
*** XTP_003 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] xpmem_detach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_003 PASSED
|
||||
|
||||
*** XTP_004 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] xpmem_detach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_004 PASSED
|
||||
|
||||
*** XTP_005 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_005 PASSED
|
||||
|
||||
*** XTP_006 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child failed (parent process exited already
|
||||
*** XTP_006 PASSED
|
||||
|
||||
*** XTP_007 start ***
|
||||
[OK] xpmem_make
|
||||
[OK] xpmem_get in child
|
||||
[OK] xpmem_attach in child
|
||||
[OK] validate TEST_VAL
|
||||
[OK] xpmem_remove
|
||||
*** XTP_007 PASSED
|
||||
|
||||
*** XTP_901 start ***
|
||||
[OK] xpmem_make failed (invalid address)
|
||||
[OK] xpmem_make succeed(do twice to same address)
|
||||
*** XTP_901 PASSED
|
||||
|
||||
*** XTP_902 start ***
|
||||
[OK] xpmem_get in child failed (invalid segid)
|
||||
[OK] xpmem_get in child (do twice to same segid
|
||||
*** XTP_902 PASSED
|
||||
|
||||
*** XTP_903 start ***
|
||||
[OK] xpmem_attach in childi failed (invalid apid)
|
||||
[OK] xpmem_attach in child succeed (do twice to same apid)
|
||||
*** XTP_903 PASSED
|
||||
|
||||
*** XTP_904 start ***
|
||||
[OK] xpmem_detach in child succeed (invalid address)
|
||||
[OK] xpmem_detach in child succeed (do twice to same address)
|
||||
*** XTP_904 PASSED
|
||||
|
||||
*** XTP_905 start ***
|
||||
[OK] xpmem_remove failed (invalid segid)
|
||||
[OK] xpmem_remove failed (do twice to same segid)
|
||||
*** XTP_905 PASSED
|
||||
|
||||
Reference in New Issue
Block a user