apache / apache/incubator-pegasus

rdsn core.aio test failed when using config-test-posix-aio.ini

Open
#295 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
2.1k
Forks
328
PR merge metrics
No merged PRs in 30d

Description

在build机上编译时遇到使用posix-aio作为aio_provider时测试失败的问题。
运行:
`./dsn.core.tests --gtest_filter=core.aio config-test-posix-aio.ini`
错误日志:
`E2019-02-28 11:49:39.890 (1551325779890758008 2d09) client.io-thrd.11529: native_aio_provider.posix.cpp:187:aio_internal(): file op failed, err = 22 (Invalid argument). On FreeBSD, you may need to load aio kernel module by running 'sudo kldload aio'.
`

测试了c3build01,c3build03,c4build04三台,均为gcc4.8.2,c3build01和03的glibc2.12,c4build04 glibc2.17。

c3build01,c3build03都遇到这个问题,c4build04测试成功。
问题在于aio_read/aio_write调用时期。
c3build03能跑通测试aio的简单实例,在rdsn框架下将TEST(core,aio)替换为aio简单实例,也会得到Invalid argument错误。strace系统调用,aio简单实例可以trace到`open("tmp", O_RDWR|O_CREAT, 0666) = 3
`这样的信息,rdsn的dsn.core.tests却不能trace到相关信息,没有办法进行下一步调试。

c3build03编译得到的dsn.core.tests拷贝到c4build04上却可以测试通过。

Contributor guide

Open the contributing guide

Research direction

The failure is reported at native_aio_provider.posix.cpp:187 and is exercised by TEST(core,aio) with config-test-posix-aio.ini. Start by running ./dsn.core.tests --gtest_filter=core.aio config-test-posix-aio.ini and compare c3build03 with c4build04 using strace around aio_read/aio_write. Done means the core.aio test passes on the affected build environment and the Invalid argument failure is understood.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
operating-systems, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.