Bug 2127993

Summary: wstring-constructor of std::filesystem::path throws for non-ASCII characters
Product: Red Hat Enterprise Linux 8 Reporter: Andrew Mike <amike>
Component: gccAssignee: Marek Polacek <mpolacek>
gcc sub component: gcc-toolset-12 QA Contact: Václav Kadlčík <vkadlcik>
Status: CLOSED ERRATA Docs Contact:
Severity: high    
Priority: high CC: alanm, brclark, casantos, fweimer, jwakely, jwright, mkielian, mkolbas, mpolacek, pandrade, sipoyare, vkadlcik
Version: 8.6Keywords: Bugfix, Reopened, Triaged
Target Milestone: rcFlags: pm-rhel: mirror+
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: gcc-toolset-12-gcc-12.2.1-4.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of:
: 2221740 (view as bug list) Environment:
Last Closed: 2023-05-16 08:25:42 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:
Bug Depends On:    
Bug Blocks: 2221740, 2221763    
Attachments:
Description Flags
test source file none

Description Andrew Mike 2022-09-19 14:34:25 UTC
Created attachment 1912951 [details]
test source file

Description of problem: When

Version-Release number of selected component (if applicable):
gcc-toolset-11-11.1-1.el8.x86_64

How reproducible: 100%

Steps to Reproduce:
1. Install gcc-toolset-11 package.
2. Run compilation with test file: "scl enable gcc-toolset-11 'g++ -o char_test char_test.cpp"
3. Run the char_test binary.

Actual results:
UTF-8
UTF-32LE
Dir1/猫.txt
Build from char multibyte string
Build from wchar_t string
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
  what():  filesystem error: Cannot convert character sequence: Invalid or incomplete multibyte or wide character
Aborted (core dumped)

Expected results:
UTF-8
UTF-32LE
Dir1/猫.txt
Build from char multibyte string
Build from wchar_t string

Additional info:
- This was illustrated in upstream GCC bug 95048.

Comment 2 Marek Polacek 2022-09-19 17:22:47 UTC
The upstream PR hasn't been fixed yet, so there's nothing to backport at this time.  Let's track this upstream
in https://gcc.gnu.org/PR95048.

Comment 5 Marek Polacek 2022-10-19 14:59:05 UTC
The upstream bug hasn't been fixed yet.

Comment 6 Marek Polacek 2022-10-24 16:08:10 UTC
There's now a patch: https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603871.html

Comment 7 Marek Polacek 2022-10-31 16:08:50 UTC
The patch hasn't been reviewed yet but there's a chance we could fix this in GTS 12.1.

Comment 8 Marek Polacek 2022-11-14 16:55:37 UTC
Patch backported to upstream gcc 12.

Comment 9 Marek Polacek 2022-11-14 18:53:13 UTC
(In reply to Marek Polacek from comment #8)
> Patch backported to upstream gcc 12.

https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=c6bd8fac5e3bc6003f889fbd6042c0d8aa9c40ed

Comment 18 errata-xmlrpc 2023-05-16 08:25:42 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 (gcc-toolset-12-gcc bug fix and enhancement update), 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://access.redhat.com/errata/RHBA-2023:2766