public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/14975] New: Segfault on low-level write error during imbue
@ 2004-04-16 15:00 peturr02 at ru dot is
  2004-04-16 15:02 ` [Bug libstdc++/14975] " peturr02 at ru dot is
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: peturr02 at ru dot is @ 2004-04-16 15:00 UTC (permalink / raw)
  To: gcc-bugs

This bit from basic_filebuf::imbue in include/bits/fstream.tcc can't
possibly be correct:

              else if (_M_writing && (__testvalid = _M_terminate_output()))
                _M_set_buffer(-1);
            }
        }

      if (__testvalid)
        _M_codecvt = _M_codecvt_tmp;

If __testvalid is false for some reason (for example because
_M_terminate_output returned false because of a low-level write error),
then _M_codecvt will still point to the codecvt facet from the old locale.

Since no reference is kept to the old locale, the facet may be deleted at
any time, and so keeping a pointer to it is certainly wrong.

-- 
           Summary: Segfault on low-level write error during imbue
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: peturr02 at ru dot is
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
@ 2004-04-16 15:02 ` peturr02 at ru dot is
  2004-04-16 15:19 ` peturr02 at ru dot is
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: peturr02 at ru dot is @ 2004-04-16 15:02 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From peturr02 at ru dot is  2004-04-16 13:44 -------
Created an attachment (id=6094)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=6094&action=view)
Test case

This test case shows a segfault after a low-level write error.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
  2004-04-16 15:02 ` [Bug libstdc++/14975] " peturr02 at ru dot is
@ 2004-04-16 15:19 ` peturr02 at ru dot is
  2004-04-16 15:19 ` pcarlini at suse dot de
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: peturr02 at ru dot is @ 2004-04-16 15:19 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From peturr02 at ru dot is  2004-04-16 13:45 -------
Created an attachment (id=6095)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=6095&action=view)
Test case

This test case shows a segfault when an overridden version of
overflow returns eof().


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
  2004-04-16 15:02 ` [Bug libstdc++/14975] " peturr02 at ru dot is
  2004-04-16 15:19 ` peturr02 at ru dot is
@ 2004-04-16 15:19 ` pcarlini at suse dot de
  2004-04-16 15:50 ` pcarlini at suse dot de
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pcarlini at suse dot de @ 2004-04-16 15:19 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 772 bytes --]


------- Additional Comments From pcarlini at suse dot de  2004-04-16 14:03 -------
Hi Pétur, thanks for the testcases. Indeed, while working on 12077 I had noticed
that something was wrong... but had hoped nobody would notice ;)

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pcarlini at suse dot de
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2004-04-16 14:03:43
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
                   ` (2 preceding siblings ...)
  2004-04-16 15:19 ` pcarlini at suse dot de
@ 2004-04-16 15:50 ` pcarlini at suse dot de
  2004-04-16 17:27 ` cvs-commit at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pcarlini at suse dot de @ 2004-04-16 15:50 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |3.4.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
                   ` (3 preceding siblings ...)
  2004-04-16 15:50 ` pcarlini at suse dot de
@ 2004-04-16 17:27 ` cvs-commit at gcc dot gnu dot org
  2004-04-17 15:07 ` [Bug libstdc++/14975] [3.4 only] " peturr02 at ru dot is
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-04-16 17:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-04-16 16:06 -------
Subject: Bug 14975

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	paolo@gcc.gnu.org	2004-04-16 16:06:22

Modified files:
	libstdc++-v3   : ChangeLog 
	libstdc++-v3/include/bits: fstream.tcc 
Added files:
	libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char: 
	                                                       14975-1.cc 
	libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t: 
	                                                          14975-2.cc 

Log message:
	2004-04-16  Paolo Carlini  <pcarlini@suse.de>
	
	PR libstdc++/14975
	* include/bits/fstream.tcc (basic_filebuf::imbue): Zero _M_codecvt
	in case of error.
	* testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc: New.
	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&r1=1.2449&r2=1.2450
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/include/bits/fstream.tcc.diff?cvsroot=gcc&r1=1.120&r2=1.121
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] [3.4 only] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
                   ` (4 preceding siblings ...)
  2004-04-16 17:27 ` cvs-commit at gcc dot gnu dot org
@ 2004-04-17 15:07 ` peturr02 at ru dot is
  2004-04-18  2:22 ` pcarlini at suse dot de
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: peturr02 at ru dot is @ 2004-04-17 15:07 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From peturr02 at ru dot is  2004-04-17 14:49 -------
       if (__testvalid)
 	_M_codecvt = _M_codecvt_tmp;
+      else
+	_M_codecvt = 0;
     }

It would probably also be a good idea to somehow signal the error in
overflow (for example by throwing an exception).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] [3.4 only] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
                   ` (5 preceding siblings ...)
  2004-04-17 15:07 ` [Bug libstdc++/14975] [3.4 only] " peturr02 at ru dot is
@ 2004-04-18  2:22 ` pcarlini at suse dot de
  2004-04-29 10:42 ` cvs-commit at gcc dot gnu dot org
  2004-04-29 11:37 ` pcarlini at suse dot de
  8 siblings, 0 replies; 10+ messages in thread
From: pcarlini at suse dot de @ 2004-04-18  2:22 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2004-04-17 22:11 -------
Ok, thanks, I will look into this.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] [3.4 only] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
                   ` (6 preceding siblings ...)
  2004-04-18  2:22 ` pcarlini at suse dot de
@ 2004-04-29 10:42 ` cvs-commit at gcc dot gnu dot org
  2004-04-29 11:37 ` pcarlini at suse dot de
  8 siblings, 0 replies; 10+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-04-29 10:42 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-04-29 10:26 -------
Subject: Bug 14975

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	paolo@gcc.gnu.org	2004-04-29 10:26:44

Modified files:
	libstdc++-v3   : ChangeLog 
	libstdc++-v3/include/bits: fstream.tcc 
Added files:
	libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char: 
	                                                       14975-1.cc 
	libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t: 
	                                                          14975-2.cc 

Log message:
	2004-04-29  Paolo Carlini  <pcarlini@suse.de>
	
	PR libstdc++/14975
	* include/bits/fstream.tcc (basic_filebuf::imbue): Zero _M_codecvt
	in case of error.
	* testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc: New.
	* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.2224.2.87&r2=1.2224.2.88
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/include/bits/fstream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.116.4.4&r2=1.116.4.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.6.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.6.1



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libstdc++/14975] [3.4 only] Segfault on low-level write error during imbue
  2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
                   ` (7 preceding siblings ...)
  2004-04-29 10:42 ` cvs-commit at gcc dot gnu dot org
@ 2004-04-29 11:37 ` pcarlini at suse dot de
  8 siblings, 0 replies; 10+ messages in thread
From: pcarlini at suse dot de @ 2004-04-29 11:37 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pcarlini at suse dot de  2004-04-29 10:27 -------
Fixed for 3.4.1.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14975


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2004-04-29 10:27 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-04-16 15:00 [Bug libstdc++/14975] New: Segfault on low-level write error during imbue peturr02 at ru dot is
2004-04-16 15:02 ` [Bug libstdc++/14975] " peturr02 at ru dot is
2004-04-16 15:19 ` peturr02 at ru dot is
2004-04-16 15:19 ` pcarlini at suse dot de
2004-04-16 15:50 ` pcarlini at suse dot de
2004-04-16 17:27 ` cvs-commit at gcc dot gnu dot org
2004-04-17 15:07 ` [Bug libstdc++/14975] [3.4 only] " peturr02 at ru dot is
2004-04-18  2:22 ` pcarlini at suse dot de
2004-04-29 10:42 ` cvs-commit at gcc dot gnu dot org
2004-04-29 11:37 ` pcarlini at suse dot de

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).