Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#107 closed enhancement (duplicate)

crash in threads with cerr-usage when cin is a pipe

Reported by: anonymous Owned by: bird
Priority: low Milestone:
Component: libc Version: 0.6
Severity: minor Keywords:
Cc:

Description

Hi,

when I run the following program compiled with gcc 3.3.5 CSD1 and a input redirection I get SYS1808 with code 0005.

#include <iostream>
using namespace std;

void threadfunc(void*)
{  cerr << "in thread\n";
}

int main()
{  cerr << "before beginthread\n";
   _beginthread(threadfunc, NULL, 65536, NULL);
   cerr << "after beginthread\n";
   return 0;
}
D:\TEMP>gcc test.cpp -lstdc++

D:\TEMP>type test.cpp | test.exe
before beginthread
aifnt etrh rbeeagdi
ntSYS1808:
Der Prozeß wurde gestoppt. Der Softwarediagnosecode
(Fehlercode der Ausnahmebedingung) ist 0005.

Of course, the output to cerr is not serialized, but this does not matter. I removed the mutex only for simplicity.

The signal is triggerd immediately after the end of threadfunc if and only if

  • test.exe is called with input redirection and
  • there is at least one output to cerr in the thread (cout works!).

With gcc 3.2.2 the above program works as expected even with pipe input.

Marcel

Change History (2)

comment:1 Changed 13 years ago by anonymous

  • Resolution set to duplicate
  • Status changed from new to closed

same as #109

comment:2 Changed 13 years ago by bird

  • Component changed from libc-frontend to libc
  • Milestone kNIX Phase 1 deleted
  • Version set to 0.6
Note: See TracTickets for help on using tickets.