Custom Query (245 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (34 - 36 of 245)

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Ticket Resolution Summary Owner Reporter
#256 fixed LIBC stream fmutex panic Silvan Scherrer dmik
Description

An attempt to terminate a multi-threaded console program with Ctrl-C may often cause LIBC to abort with a message like this:

LIBC PANIC!!
fmutex deadlock: Owner died!
0x18b0902c: Owner=0x01490002 Self=0x01490001 fs=0x3 flags=0x0 hev=0x0001004a
            Desc="LIBC stream"
pid=0x0149 ppid=0x00ba tid=0x0001 slot=0x00ba pri=0x0200 mc=0x0000
D:\CODING\TESTS\OS2\DOS\SEH\SEH.EXE
Process dumping was disabled, use DUMPPROC / PROCDUMP to enable it.

This happens when a thread gets killed (as a result of the process termination procedure, initiated by the default Ctrl-C handler) while it is inside e.g. printf() and then another thread attempts to use printf() before it is terminated.

The same effect may be also seen when killing process with DosKillProcess?.

This is very annoying (especially if there are many threads each of which panics) and it can also cause a hard deadlock (e.g. if printf() is used in an exception handler) that won't ever let thread 1 to exit.

#126 wontfix LIBC: Provide binary runtime WPI archives bird dmik
Description

It will be handy to have an official binary distribution of the LIBC Runtime libraries as a WPI archive. This way, it will be possible to let WarpIn? maintain package dependencies for applications using LIBC and thus simplify to resolve LIBC requirements for both application vendors packaging their products and end-users installing them.

#190 wontfix Libc path rewriting is not working for fork()ed processes bird Yuri Dario
Description

Use of the klibccfg pathrewriter dll works only for main process: child forked processes can use only predefined libc rewriting rules (e.g. /@tmpdir).

This could be a dll init fault.

Sample testcase:

#include <sys/stat.h>

#include <stdio.h>
#include <unistd.h>

//#define DIR "/@tmpdir"
#define DIR "/$e/dati/yuri"

void test_dir( void)
{
   int ret;
   struct stat st;

   printf( "%d test dir\n", getpid());
   ret = stat( DIR, &st);
   if (ret != 0) {
	printf( "%d test dir failed\n", getpid());
	return;
   }
   printf( "%d test dir ok\n", getpid());
}


void test( void)
{
   FILE* f;

   printf( "%d test file\n", getpid());
   f = fopen( DIR "/fax.odt", "rb");
   if (f == NULL) {
	   printf( "%d test file failed\n", getpid());
	return;
   }
   fclose(f);
   printf( "%d test file OK\n", getpid());
}

void main( void)
{
   printf( "pid %d\n", getpid());

   fork();

   test();
   test_dir();

}

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Note: See TracQuery for help on using queries.