Roland McGrath <[EMAIL PROTECTED]> writes: > > I'm not sure, but it seems to work. There are two bugs in the default > > pager (or GNUMach, I'm not sure about this) that make tmpfs unusable. > > We should figure out what these really are.
Right. I hope you can have a look at these backtraces. Please notice I've commented out all default_pager_object_set_size callers because that made tmpfs hang. I also changed tmpfs_dirent like Marcus suggested a while ago. (I know it isn't a perfect solution, but it is good enough for now...) I think I said in another mail that tmpfs crashes, that is not true. My test program crashes, tmpfs doesn't crash because exceptions are caught ( I think). What I said about the crashing filesystem wasn't true either (I was really sleepy yesterday...). That crashing filesystem wasn't caused by tmpfs, but by my test program. The filesystem that crashes in the filesystem that the executable was stored on. I'm really sorry for this confusion... I think we can better ignore the test program I wrote for now. Here are the commands I used and the backtraces. Especially backtrace 4 is interesting. If something is not clear or more info is required just ask me. Thanks, Marco cd /tmp settrans -ac foo /hurd/tmpfs 4M (it gets PID 393) cd foo echo a>a (Now tmpfs hangs) Other console: gdb /hurd/tmpfs 393 (gdb) i thr 4 thread 393.4 0x01140dd3 in memcpy () from /lib/libc.so.0.3 3 thread 393.3 0x010c28dc in evc_wait () from /lib/libc.so.0.3 2 thread 393.2 0x010c28dc in evc_wait () from /lib/libc.so.0.3 * 1 thread 393.1 0x010c28dc in evc_wait () from /lib/libc.so.0.3 (gdb) thr 1 [Switching to thread 1 (thread 393.1)]#0 0x010c28dc in evc_wait () from /lib/libc.so.0.3 (gdb) bt full #0 0x010c28dc in evc_wait () from /lib/libc.so.0.3 No symbol table info available. #1 0x010c2f39 in mach_msg () from /lib/libc.so.0.3 No symbol table info available. #2 0x0109158c in cproc_block () at /home/marco/src/hurdcvs/hurd/libthreads/cprocs.c:645 msg = {msgh_bits = 19267136, msgh_size = 40176, msgh_remote_port = 17386064, msgh_local_port = 17366584, msgh_seqno = 17365640, msgh_id = 17385964} waiter = 0xd new = 0x1090804 p = 0x804e820 __unlocked = 268451845 #3 0x01091759 in condition_wait (c=0x0, m=0x1094ba8) at /home/marco/src/hurdcvs/hurd/libthreads/cprocs.c:787 p = 0x804e820 #4 0x010929f8 in cthread_exit (result=0x0) at /home/marco/src/hurdcvs/hurd/libthreads/cthreads.c:399 t = 0x1094bec #5 0x0804a1d1 in main (argc=2, argv=0x125ff90) at ../../hurd/tmpfs/tmpfs.c:373 err = 0 bootstrap = 11 realnode = 268451845 host_priv = 20 ---Type <return> to continue, or q <return> to quit--- st = {st_fstype = 23, st_fsid = 494294901194752, st_ino = 4556155900926099456, st_gen = 1060812711, st_rdev = 0, st_mode = 4227492, st_nlink = 1, st_uid = 0, st_gid = 0, st_size = 4556155900926099456, st_atime = 1060812711, st_atime_usec = 900000, st_mtime = 1060812711, st_mtime_usec = 900000, st_ctime = 1060812711, st_ctime_usec = 900000, st_blksize = 8192, st_blocks = 0, st_author = 0, st_flags = 0, st_spare = {0, 0, 0, 0, 0, 0, 0, 0}} #6 0x010e55bf in __libc_start_main () from /lib/libc.so.0.3 No symbol table info available. (gdb) thr 2 [Switching to thread 2 (thread 393.2)]#0 0x010c28dc in evc_wait () from /lib/libc.so.0.3 (gdb) bt full #0 0x010c28dc in evc_wait () from /lib/libc.so.0.3 No symbol table info available. #1 0x010c2f39 in mach_msg () from /lib/libc.so.0.3 No symbol table info available. #2 0x010c3514 in mach_msg_server_timeout () from /lib/libc.so.0.3 No symbol table info available. #3 0x010c3584 in mach_msg_server () from /lib/libc.so.0.3 No symbol table info available. #4 0x010cf9b6 in get_privileged_ports () from /lib/libc.so.0.3 No symbol table info available. #5 0x010926d8 in cthread_body (self=0x804e8e0) at /home/marco/src/hurdcvs/hurd/libthreads/cthreads.c:306 t = 0x804e868 (gdb) thr 3 [Switching to thread 3 (thread 393.3)]#0 0x010c28dc in evc_wait () from /lib/libc.so.0.3 (gdb) bt full #0 0x010c28dc in evc_wait () from /lib/libc.so.0.3 No symbol table info available. #1 0x010c2f39 in mach_msg () from /lib/libc.so.0.3 No symbol table info available. #2 0x010c3514 in mach_msg_server_timeout () from /lib/libc.so.0.3 No symbol table info available. #3 0x01097f50 in thread_function.1 () at /home/marco/src/hurdcvs/hurd/libports/manage-multithread.c:136 No locals. #4 0x0109805d in ports_manage_port_operations_multithread () at /home/marco/src/hurdcvs/hurd/libports/manage-multithread.c:164 No locals. #5 0x01033233 in master_thread_function (demuxer=0x8049bac) at ../../hurd/libdiskfs/init-first.c:37 err = EMACH_RCV_INTERRUPTED #6 0x010926d8 in cthread_body (self=0x804ec40) at /home/marco/src/hurdcvs/hurd/libthreads/cthreads.c:306 t = 0x804ebc8 (gdb) thr 4 [Switching to thread 4 (thread 393.4)]#0 0x01140dd3 in memcpy () from /lib/libc.so.0.3 (gdb) bt full #0 0x01140dd3 in memcpy () from /lib/libc.so.0.3 No symbol table info available. #1 0x01042f14 in do_memcpy.2 () at /home/marco/src/hurdcvs/hurd/libpager/pager-memcpy.c:125 buf = {{__jmpbuf = {19446804, 40608, 0, 118784, 19447164, 19447132}, __mask_was_saved = 19446804, __saved_mask = 17051412}} _pager_class = (struct port_class *) 0x804e928 #2 0x01042fb4 in do_copy.1 () at /home/marco/src/hurdcvs/hurd/libpager/pager-memcpy.c:166 buf = {{__jmpbuf = {4096, 19447164, 19447120, 2, 0, 19446840}, __mask_was_saved = 19446840, __saved_mask = 17061048}} _pager_class = (struct port_class *) 0x804e928 #3 0x010d9643 in hurd_catch_signal () from /lib/libc.so.0.3 No symbol table info available. #4 0x010431cf in pager_memcpy () at /home/marco/src/hurdcvs/hurd/libpager/pager-memcpy.c:207 No locals. #5 0x01039127 in _diskfs_rdwr_internal (np=0x80550f8, data=0x128bf60 "a\n\001", offset=0, amt=0x128df60, dir=1, notime=0) at ../../hurd/libdiskfs/rdwr-internal.c:61 memobj = 41 prot = 3 err = EKERN_NO_SPACE #6 0x0103554c in diskfs_S_io_write (cred=0x804ef28, data=0x128bf60 "a\n\001", ---Type <return> to continue, or q <return> to quit--- datalen=2, offset=-1, amt=0x128df60) at ../../hurd/libdiskfs/io-write.c:80 np = (struct node *) 0x80550f8 err = 0 off = 0 #7 0x01035808 in _Xio_write (InHeadP=0x128bf3c, OutHeadP=0x128df3c) at ioServer.c:131 In1P = (Request *) 0x128b740 msgh_size = 118784 msgh_size_delta = 2 offsetCheck = {msgt_name = 11, msgt_size = 64, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0} amountType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0} io_object = 0x804ef28 #8 0x01035705 in diskfs_io_server (InHeadP=0x128bf3c, OutHeadP=0x1d000) at ioServer.c:1999 RetCodeType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0} routine = 0x2 #9 0x01027da1 in diskfs_demuxer (inp=0x128bf3c, outp=0x128df3c) at ../../hurd/libdiskfs/demuxer.c:32 No locals. #10 0x01097e51 in internal_demuxer.0 () at /home/marco/src/hurdcvs/hurd/libports/manage-multithread.c:101 ---Type <return> to continue, or q <return> to quit--- No locals. #11 0x010c3490 in mach_msg_server_timeout () from /lib/libc.so.0.3 No symbol table info available. #12 0x01097f50 in thread_function.1 () at /home/marco/src/hurdcvs/hurd/libports/manage-multithread.c:136 No locals. #13 0x010926d8 in cthread_body (self=0x804edf0) at /home/marco/src/hurdcvs/hurd/libthreads/cthreads.c:306 t = 0x804ed78 (gdb) _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd