From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.1 required=3.0 tests=AWL,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 05C1C1F4B4 for ; Fri, 16 Oct 2020 10:49:43 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 8FCE9120925; Fri, 16 Oct 2020 19:49:02 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id E043C12091A for ; Fri, 16 Oct 2020 19:49:00 +0900 (JST) Received: by filterdrecv-p3iad2-fb4b446ff-4vshc with SMTP id filterdrecv-p3iad2-fb4b446ff-4vshc-20-5F897ABB-1F 2020-10-16 10:49:31.325596495 +0000 UTC m=+299215.120820969 Received: from herokuapp.com (unknown) by geopod-ismtpd-2-1 (SG) with ESMTP id dYUIaInyQBSoPQOnRlW6xg for ; Fri, 16 Oct 2020 10:49:31.251 +0000 (UTC) Date: Fri, 16 Oct 2020 10:49:31 +0000 (UTC) From: nobu@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 76284 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 17220 X-Redmine-Issue-Author: yahonda X-Redmine-Sender: nobu X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?q8Dly+pU2+3ektTtZVXgZtbJPXwqo7p86jCsvYTW4BwU62uvaW5s9oE2t7NnR2?= =?us-ascii?Q?40rGF9kLzb23v=2F7JwQvsuJtanlMPc3fKLC3XYXp?= =?us-ascii?Q?DnH2IHxHlK+ZIHlufAs0QPA75OE9HLrNswJm7AA?= =?us-ascii?Q?DFuf0adjlhSppC0Xv3F4y2jZgFsYe6eRCG8RMjW?= =?us-ascii?Q?fUJHXjPRtbyOtuERdeRziC8dP6gju2xa4ZEa+Jo?= =?us-ascii?Q?fw79eTy4aU3wYjMho=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 100419 Subject: [ruby-core:100419] [Ruby master Bug#17220] Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #17220 has been updated by nobu (Nobuyoshi Nakada). Status changed from Open to Third Party's Issue `getaddrinfo_a` seems to create a thread, and it will be lost by `fork`. I'm not sure if this is a glibc's spec or bug. This code demonstrates the behavior without Ruby. ```C #define _GNU_SOURCE #include #include #include #include #include #include int test_gai(const char *where, const char *name) { printf("in %s: ", where); fflush(stdout); struct gaicb req = {.ar_name = name}; struct gaicb *reqs[1] = {&req}; int ret = getaddrinfo_a(GAI_NOWAIT, reqs, 1, NULL); if (ret) goto error; ret = gai_suspend((const struct gaicb **)reqs, 1, NULL); if (ret) goto error; ret = gai_error(reqs[0]); if (ret) goto error; struct addrinfo *ai = reqs[0]->ar_result; if (ai) { printf("%s\n", ai->ai_canonname ? ai->ai_canonname : "noname"); } return 0; error: fprintf(stderr, "failed: %s\n", gai_strerror(ret)); return ret; } int main(int argc, char **argv) { test_gai("parent", "localhost"); if (argc > 1) { printf("sleeping..."); fflush(stdout); usleep((useconds_t)(atof(argv[1])*1e6)); printf("\n"); } pid_t pid = fork(); if (pid == 0) { test_gai("child", "localhost"); return 0; } int status; waitpid(pid, &status, 0); return status; } ``` ```sh $ gcc -o gaitest gaitest.c -lanl $ ./gaitest 1 in parent: noname sleeping... in child: noname $ ./gaitest 0.9 in parent: noname sleeping... in child: ^C ``` ---------------------------------------- Bug #17220: Rails Active Job integration test fails with Ruby 3.0.0 since 2038cc6cab6ceeffef3ec3a765c70ae684f829ed https://bugs.ruby-lang.org/issues/17220#change-88034 * Author: yahonda (Yasuo Honda) * Status: Third Party's Issue * Priority: Normal * ruby -v: ruby 2.8.0dev (2020-08-27T07:39:13Z v3_0_0_preview1~397 2038cc6cab) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- One of the Rails CI, Active Job integration test with sidekiq, against Ruby 3.0.0 has been failing since August 30, 2020. According to `git bisect` is is triggered by 2038cc6cab6ceeffef3ec3a765c70ae684f829ed . Somehow this issue only reproduces with Ruby on Docker like `rubylang/ruby:master-nightly-bionic` It does not reproduce if Ruby is installed locally using `rbenv install 3.0.0-dev` on Ubuntu 20.04 and macOS 11 beta. ### The first failed build job https://buildkite.com/rails/rails/builds/71321#84b29655-b3df-4b5c-8b20-cbf15ecd9653 ``` ruby Ruby 2.8.0p-1 (2020-08-29 revision d7492a0be885ea9f2b9f71e3e95582f9a859c439) [x86_64-linux] ``` ### The last successful build job https://buildkite.com/rails/rails/builds/71143#369217f7-95f6-4ab9-8ef5-7c6364bd803e ```ruby Ruby 2.8.0p-1 (2020-08-20 revision a74df67244199d1fd1f7a20b49dd5a096d2a13a2) [x86_64-linux] ``` ### `git bisect` result Performed `git bisect` ruby/ruby repository and it says `2038cc6cab6ceeffef3ec3a765c70ae684f829ed` triggers this build failure. ## Steps to reproduce 1. Install Docker 2. Install Ruby 2.7.1 (or whatever Ruby version to run rake) 3. Create Ruby docker image for 2038cc6cab6ceeffef3ec3a765c70ae684f829ed ``` git clone https://github.com/ruby/ruby-docker-images.git cd ruby-docker-images rake docker:build ruby_version=master:2038cc6cab6ceeffef3ec3a765c70ae684f829ed ``` 4. Run Rails CI using the Docker image created in step 3 ``` cd ~ git clone https://github.com/rails/rails.git cd rails git clone https://github.com/rails/buildkite-config .buildkite/ RUBY_IMAGE=rubylang/ruby:master-2038cc6cab6ceeffef3ec3a765c70ae684f829ed-bionic docker-compose -f .buildkite/docker-compose.yml build base && CI=1 docker-compose -f .buildkite/docker-compose.yml run default runner activejob 'AJ_ADAPTER=sidekiq AJ_INTEGRATION_TESTS=true bin/test test/integration/queuing_test.rb --seed 5170' ``` ## Actual result ``` Using sidekiq Run options: --seed 5170 # Running: .SSSF Failure: QueuingTest#test_should_run_job_enqueued_in_the_future_at_the_specified_time [/rails/activejob/test/integration/queuing_test.rb:76]: Expected false to be truthy. bin/test test/integration/queuing_test.rb:71 .F Failure: QueuingTest#test_should_run_jobs_enqueued_on_a_listening_queue [/rails/activejob/test/integration/queuing_test.rb:14]: Expected false to be truthy. bin/test test/integration/queuing_test.rb:11 .SS..F Failure: QueuingTest#test_current_locale_is_kept_while_running_perform_later [/rails/activejob/test/integration/queuing_test.rb:102]: Expected false to be truthy. bin/test test/integration/queuing_test.rb:93 F Failure: QueuingTest#test_current_timezone_is_kept_while_running_perform_later [/rails/activejob/test/integration/queuing_test.rb:119]: Expected false to be truthy. bin/test test/integration/queuing_test.rb:110 .. Finished in 34.153644s, 0.4392 runs/s, 0.3514 assertions/s. 15 runs, 12 assertions, 4 failures, 0 errors, 5 skips You have skipped tests. Run with --verbose for details. ``` ## Expected result It should success as the Ruby as of the previous commit `1035a3b202ee86bf2b0a1d00eefcfff0d7ab9f6b` does. ``` $ RUBY_IMAGE=rubylang/ruby:master-1035a3b202ee86bf2b0a1d00eefcfff0d7ab9f6b-bionic docker-compose -f .buildkite/docker-compose.yml build base && CI=1 docker-compose -f .buildkite/docker-compose.yml run default runner activejob 'AJ_ADAPTER=sidekiq AJ_INTEGRATION_TESTS=true bin/test test/integration/queuing_test.rb --seed 5170' ``` ``` +++ +++ activejob: AJ_ADAPTER=sidekiq AJ_INTEGRATION_TESTS=true bin/test test/integration/queuing_test.rb --seed 5170 Using sidekiq Run options: --seed 5170 # Running: .SSS....SS..... Finished in 13.647623s, 1.0991 runs/s, 1.0258 assertions/s. 15 runs, 14 assertions, 0 failures, 0 errors, 5 skips You have skipped tests. Run with --verbose for details. ``` -- https://bugs.ruby-lang.org/