Bug 1223045 - glob in threads is broken
Summary: glob in threads is broken
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: perl   
(Show other bugs)
Version: 7.1
Hardware: All
OS: All
medium
medium
Target Milestone: rc
: ---
Assignee: Petr Šabata
QA Contact: Martin Kyral
Lenka Špačková
URL: https://rt.perl.org/Public/Bug/Displa...
Whiteboard:
Keywords: Patch
Depends On:
Blocks: 1203710 1313485 1289025 1295829
TreeView+ depends on / blocked
 
Reported: 2015-05-19 16:46 UTC by Paulo Andrade
Modified: 2016-11-04 00:15 UTC (History)
5 users (show)

Fixed In Version: perl-5.16.3-287.el7
Doc Type: Release Note
Doc Text:
Perl interpreter no longer crashes when using glob() with a threaded program Previously, when calling the Perl glob() function after spawning a thread, the Perl interpreter terminated unexpectedly with a segmentation fault. An upstream patch has been applied to clone glob() interpreter-wide data, and using Perl glob() with a threaded program now works as expected.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-11-04 00:15:43 UTC
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
File::Glob: Dup glob state in CLONE() (4.55 KB, patch)
2015-09-02 15:43 UTC, Petr Šabata
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2016:2191 normal SHIPPED_LIVE perl bug fix update 2016-11-03 13:19:19 UTC

Description Paulo Andrade 2015-05-19 16:46:32 UTC
Upstream bug report:
https://rt.perl.org/Public/Bug/Display.html?id=119897

Upstream patch:
http://perl5.git.perl.org/perl.git/commitdiff_plain/facf34e?hp=ce3470dcce263170c48127c11bb2a47ca92f2616

For easier visualization, and cut&paste, reproducer
repeated here:

---8<---
#!/usr/bin/perl
use warnings;
use strict;
use threads;
use threads::shared;
my $nthread = 20;
sub work {
    foreach (1..10000) {
	my @files = <*.supp>;
    }
}
my @threads;
foreach my $i (1..$nthread) {
    push @threads, threads->create(\&work);
}
foreach my $t (@threads) {
    $t->join();
}
---8<---

Comment 3 Petr Šabata 2015-09-02 15:43:33 UTC
Created attachment 1069481 [details]
File::Glob: Dup glob state in CLONE()

Backport of the proposed patch for 5.16.3.

Comment 5 Petr Šabata 2016-03-02 15:04:58 UTC
Pushed as perl-5.16.3-287.el7.

Comment 12 errata-xmlrpc 2016-11-04 00:15:43 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-2191.html


Note You need to log in before you can comment on or make changes to this bug.