[ https://issues.apache.org/jira/browse/THRIFT-4594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16537039#comment-16537039 ]
Christopher Friedt commented on THRIFT-4594: -------------------------------------------- C++ unit tests are all passing now. - I needed to correct musl libc's implementation of getaddrinfo to respect the AI_ADDRCONFIG flag (See [^thrift-alpine-20180709.tar.gz]) {code} make[5]: Entering directory '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test' An error message from getaddrinfo on the console is expected: Thrift: Mon Jul 9 14:41:21 2018 getaddrinfo -2: Name does not resolve *** No errors detected PASS: UnitTests Thrift: Mon Jul 9 14:41:27 2018 ~TFDTransport TTransportException: 'TFDTransport::close(): Bad file descriptor' *** No errors detected PASS: TFDTransportTest *** No errors detected PASS: TPipedTransportTest *** No errors detected PASS: DebugProtoTest *** No errors detected PASS: JSONProtoTest *** No errors detected PASS: OptionalRequiredTest *** No errors detected PASS: RecursiveTest *** No errors detected PASS: SpecializationTest TBinaryProtocol => OK TLEBinaryProtocol => OK TCompactProtocol => OK *** No errors detected PASS: AllProtocolsTest Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport Timeout alarm expired; attempting to unblock transport *** No errors detected PASS: TransportTest Thrift: Mon Jul 9 14:42:14 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) *** No errors detected PASS: TInterruptTest *** No errors detected PASS: TServerIntegrationTest Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) Thrift: Mon Jul 9 14:42:33 2018 SSL_shutdown: shutdown while in init (SSL_error_code = 1) *** No errors detected PASS: SecurityTest seed: 1531147353 *** No errors detected PASS: ZlibTest *** No errors detected PASS: TFileTransportTest PASS: link_test *** No errors detected PASS: OpenSSLManualInitTest *** No errors detected PASS: EnumTest *** No errors detected PASS: AnnotationTest Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: Serving with 1 io threads. Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: using libevent 2.1.8-stable method epoll Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: IO thread #0 run() done! Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: join done for IO thread #0 Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: Serving with 1 io threads. Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: using libevent 2.1.8-stable method epoll Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: IO thread #0 run() done! Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: join done for IO thread #0 Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: Serving with 1 io threads. Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: using libevent 2.1.8-stable method epoll Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Jul 9 14:42:37 2018 TNonblockingServer: IO thread #0 run() done! Thrift: Mon Jul 9 14:42:37 2018 TNonblocking: join done for IO thread #0 *** No errors detected PASS: TNonblockingServerTest Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: Serving with 1 io threads. Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: using libevent 2.1.8-stable method epoll Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Jul 9 14:42:38 2018 TConnection::workSocket(): client disconnected Thrift: Mon Jul 9 14:42:38 2018 SSL_shutdown: Broken pipe (SSL_error_code = 5) Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: IO thread #0 run() done! Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: join done for IO thread #0 Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: Serving with 1 io threads. Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: using libevent 2.1.8-stable method epoll Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Jul 9 14:42:38 2018 TConnection::workSocket(): client disconnected Thrift: Mon Jul 9 14:42:38 2018 SSL_shutdown: Broken pipe (SSL_error_code = 5) Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: IO thread #0 run() done! Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: join done for IO thread #0 Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: Serving with 1 io threads. Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: using libevent 2.1.8-stable method epoll Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Jul 9 14:42:38 2018 TConnection::workSocket(): client disconnected Thrift: Mon Jul 9 14:42:38 2018 SSL_shutdown: Broken pipe (SSL_error_code = 5) Thrift: Mon Jul 9 14:42:38 2018 TNonblockingServer: IO thread #0 run() done! Thrift: Mon Jul 9 14:42:38 2018 TNonblocking: join done for IO thread #0 *** No errors detected PASS: TNonblockingSSLServerTest =================== All 21 tests passed =================== {code} > Unable to Build Test Suite in Alpine Linux > ------------------------------------------ > > Key: THRIFT-4594 > URL: https://issues.apache.org/jira/browse/THRIFT-4594 > Project: Thrift > Issue Type: Bug > Components: Test Suite > Affects Versions: 0.11.0 > Environment: Ubuntu Bionic (native) > alpine:latest (docker) > Reporter: Christopher Friedt > Priority: Minor > Fix For: 0.12.0 > > Attachments: make-check-alpine-3.8.txt, > make-check-macos-10.13.5.text, thrift-alpine-20180701.tar.gz, > thrift-alpine-20180709.tar.gz > > > It seems that the 0.11.0 lib/cpp/test suite is not building correctly when > run inside of Alpine Linux 3.8 in a Docker container. > I've narrowed the culprits down to the non-portable (NP) class of Mutex > initializers. The failure occurs in unpatched code (and obviously in my CI > build recipe, attached). > Currently, I'm working on automating builds of thrift for Alpine Linux 3.8, > and they will likely require "make check" to pass successfully in future > versions. Might as well ensure it works now. > If you want to duplicate my build easily in Docker, you can use the > attachment (e.g. tar xpvzf thrift-ci-build-20180627.tar.xz; cd > thrift-20180627; docker build -t foo .) > {noformat} > make check > ... > /bin/bash ../../../libtool --tag=CXX --mode=link > x86_64-alpine-linux-musl-g++ -Wall -Wextra -pedantic -Os -fomit-frame-pointer > -L/usr/lib -Wl,--no-undefined -o TPipedTransportTest TPipedTransportTest.o > TPipeInterruptTest.o libtestgencpp.la ../../../lib/cpp/libthrift.la > /usr/lib/libboost_unit_test_framework.a /usr/lib/libboost_system.a > /usr/lib/libboost_thread-mt.a -lrt -lpthread > concurrency/MutexTest.o: In function `MutexTest::happy_path::test_method()': > MutexTest.cpp:(.text+0x18): undefined reference to > `apache::thrift::concurrency::Mutex::ERRORCHECK_INITIALIZER(void*)' > concurrency/MutexTest.o: In function > `MutexTest::recursive_happy_path::test_method()': > MutexTest.cpp:(.text+0x580): undefined reference to > `apache::thrift::concurrency::Mutex::RECURSIVE_INITIALIZER(void*)' > concurrency/MutexTest.o: In function `MutexTest::trylock::test_method()': > MutexTest.cpp:(.text+0x1573): undefined reference to > `apache::thrift::concurrency::Mutex::ADAPTIVE_INITIALIZER(void*)' > concurrency/MutexTest.o: In function `LFAT::LFAT()': > MutexTest.cpp:(.text._ZN4LFATC2Ev[_ZN4LFATC5Ev]+0x17): undefined reference to > `apache::thrift::concurrency::Mutex::ERRORCHECK_INITIALIZER(void*)' > collect2: error: ld returned 1 exit status > make[5]: *** [Makefile:1190: UnitTests] Error 1 > make[5]: *** Waiting for unfinished jobs.... > libtool: link: x86_64-alpine-linux-musl-g++ -Wall -Wextra -pedantic -Os > -fomit-frame-pointer -Wl,--no-undefined -o .libs/TFDTransportTest > TFDTransportTest.o -L/usr/lib ../../../lib/cpp/.libs/libthrift.so -lssl > -lcrypto /usr/lib/libboost_unit_test_framework.a -lrt -lpthread > libtool: link: x86_64-alpine-linux-musl-g++ -Wall -Wextra -pedantic -Os > -fomit-frame-pointer -Wl,--no-undefined -o .libs/TPipedTransportTest > TPipedTransportTest.o TPipeInterruptTest.o -L/usr/lib > ./.libs/libtestgencpp.a > /home/alpine/thrift/src/thrift-0.11.0/lib/cpp/.libs/libthrift.so > ../../../lib/cpp/.libs/libthrift.so -lssl -lcrypto > /usr/lib/libboost_unit_test_framework.a /usr/lib/libboost_system.a > /usr/lib/libboost_thread-mt.a -lrt -lpthread > make[5]: Leaving directory > '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test' > make[4]: *** [Makefile:1507: check-am] Error 2 > make[4]: Leaving directory > '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test' > make[3]: *** [Makefile:1510: check] Error 2 > make[3]: Leaving directory > '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test' > make[2]: *** [Makefile:1661: check-recursive] Error 1 > make[2]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp' > make[1]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib' > make[1]: *** [Makefile:576: check-recursive] Error 1 > make: *** [Makefile:659: check-recursive] Error 1 > >>> ERROR: thrift*: check failed > >>> ERROR: thrift: all failed > >>> thrift: Uninstalling dependencies..{noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)