Bug 1344749
| Summary: | perl segmentation fault when using PerlIO Layer :locale and threads | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Abhijeet Sadawarte <asadawar> | ||||||
| Component: | perl | Assignee: | perl-maint-list | ||||||
| Status: | CLOSED ERRATA | QA Contact: | Martin Kyral <mkyral> | ||||||
| Severity: | unspecified | Docs Contact: | Lenka Špačková <lkuprova> | ||||||
| Priority: | unspecified | ||||||||
| Version: | 7.2 | CC: | g.zumstrull, isenfeld, jorton, mkyral, ppisar | ||||||
| Target Milestone: | rc | Keywords: | Patch | ||||||
| Target Release: | --- | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| URL: | https://rt.perl.org/Public/Bug/Display.html?id=31923 | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | perl-5.16.3-289.el7 | Doc Type: | Release Note | ||||||
| Doc Text: |
Perl interpreter no longer crashes after using the PerlIO locale pragma
When a thread was spawned after using the PerlIO locale pragma, the Perl interpreter terminated unexpectedly with a segmentation fault. An upstream patch has been applied, which fixes PerlIO::encoding object duplication. As a result, threads are correctly created after setting a file handle encoding.
|
Story Points: | --- | ||||||
| Clone Of: | |||||||||
| : | 1345788 1390907 (view as bug list) | Environment: | |||||||
| Last Closed: | 2016-11-04 00:16:22 UTC | Type: | Bug | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Attachments: |
|
||||||||
I confirm perl-5.16.3-286.el7.x86_64 is affected. Created attachment 1167501 [details]
Upstream fix
Created attachment 1167520 [details]
Fix ported to perl-5.16.3
How to test: (1) Run the code in comment #1. Before: The program segfaults. After: The program successfully terminate with zero exit code. 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 |
Description of problem: perl segmentation fault when using PerlIO Layer :locale and threads Version-Release number of selected component (if applicable): Red Hat Enterprise Linux Server release 7.2 How reproducible: ~~~~ [root@dhcp7-145 abhi]# perl use open IO => ':locale'; use threads; sub loop {for ($x = 1; $x < 1000000000000; $x++) {}} $thr = threads->create(\&loop); ^d Segmentation fault (core dumped) ~~~~ The script should not core dump but print a message like it does when run without the "open" pragma. # perl use threads; sub loop {for ($x = 1; $x < 1000000000000; $x++) {}} $thr = threads->create(\&loop); ^d Perl exited with active threads: 1 running and unjoined 0 finished and unjoined 0 running and detached Additional info: 1. the crash is in the PUSHSTACKi(PERLSI_MAGIC); expansion 2. looks like a very old bug :( http://www.gossamer-threads.com/lists/perl/porters/219693) and it appears to have been fixed in 2015, so maybe our perl is missing it 3. link to report is ~~~ https://rt.perl.org/Public/Bug/Display.html?id=44887 ~~~ and link to patch is ~~~ https://rt.perl.org/Public/Ticket/Attachment/1362828/730066/0001-Properly-duplicate-PerlIO-encoding-objects.patch ~~~