You can subscribe to this list here.
1999 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(15) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2000 |
Jan
(6) |
Feb
(1) |
Mar
(39) |
Apr
(13) |
May
(24) |
Jun
(11) |
Jul
(23) |
Aug
(85) |
Sep
(12) |
Oct
(103) |
Nov
(79) |
Dec
(112) |
2001 |
Jan
(52) |
Feb
(82) |
Mar
(84) |
Apr
(65) |
May
(105) |
Jun
(188) |
Jul
(174) |
Aug
(182) |
Sep
(103) |
Oct
(137) |
Nov
(143) |
Dec
(98) |
2002 |
Jan
(258) |
Feb
(236) |
Mar
(386) |
Apr
(307) |
May
(238) |
Jun
(170) |
Jul
(252) |
Aug
(230) |
Sep
(278) |
Oct
(394) |
Nov
(336) |
Dec
(194) |
2003 |
Jan
(290) |
Feb
(182) |
Mar
(175) |
Apr
(220) |
May
(209) |
Jun
(286) |
Jul
(279) |
Aug
(164) |
Sep
(208) |
Oct
(324) |
Nov
(204) |
Dec
(380) |
2004 |
Jan
(344) |
Feb
(332) |
Mar
(395) |
Apr
(357) |
May
(349) |
Jun
(352) |
Jul
(279) |
Aug
(269) |
Sep
(374) |
Oct
(442) |
Nov
(428) |
Dec
(253) |
2005 |
Jan
(225) |
Feb
(219) |
Mar
(245) |
Apr
(249) |
May
(203) |
Jun
(157) |
Jul
(171) |
Aug
(194) |
Sep
(200) |
Oct
(232) |
Nov
(190) |
Dec
(195) |
2006 |
Jan
(158) |
Feb
(190) |
Mar
(235) |
Apr
(161) |
May
(134) |
Jun
(169) |
Jul
(117) |
Aug
(161) |
Sep
(170) |
Oct
(297) |
Nov
(230) |
Dec
(205) |
2007 |
Jan
(197) |
Feb
(132) |
Mar
(151) |
Apr
(97) |
May
(109) |
Jun
(99) |
Jul
(57) |
Aug
(110) |
Sep
(56) |
Oct
(119) |
Nov
(39) |
Dec
(45) |
2008 |
Jan
(101) |
Feb
(116) |
Mar
(141) |
Apr
(98) |
May
(133) |
Jun
(61) |
Jul
(43) |
Aug
(76) |
Sep
(20) |
Oct
(32) |
Nov
(22) |
Dec
(41) |
2009 |
Jan
(35) |
Feb
(15) |
Mar
(18) |
Apr
(13) |
May
(13) |
Jun
(26) |
Jul
(12) |
Aug
(32) |
Sep
(21) |
Oct
(41) |
Nov
(35) |
Dec
(12) |
2010 |
Jan
(3) |
Feb
(35) |
Mar
(28) |
Apr
(20) |
May
(5) |
Jun
(14) |
Jul
(6) |
Aug
(8) |
Sep
(20) |
Oct
(20) |
Nov
(10) |
Dec
(12) |
2011 |
Jan
(14) |
Feb
(10) |
Mar
(14) |
Apr
(14) |
May
(13) |
Jun
(43) |
Jul
(13) |
Aug
(50) |
Sep
(30) |
Oct
(23) |
Nov
(15) |
Dec
(49) |
2012 |
Jan
(15) |
Feb
(28) |
Mar
(7) |
Apr
|
May
(12) |
Jun
(13) |
Jul
(28) |
Aug
(11) |
Sep
(19) |
Oct
(27) |
Nov
(5) |
Dec
(25) |
2013 |
Jan
(18) |
Feb
(19) |
Mar
(56) |
Apr
(26) |
May
(38) |
Jun
(24) |
Jul
(42) |
Aug
(24) |
Sep
(4) |
Oct
(3) |
Nov
(18) |
Dec
(4) |
2014 |
Jan
(10) |
Feb
(9) |
Mar
(3) |
Apr
|
May
(12) |
Jun
(34) |
Jul
(8) |
Aug
(18) |
Sep
(3) |
Oct
(27) |
Nov
(2) |
Dec
(1) |
2015 |
Jan
|
Feb
(10) |
Mar
(49) |
Apr
(2) |
May
(4) |
Jun
(7) |
Jul
(1) |
Aug
(17) |
Sep
(7) |
Oct
(35) |
Nov
(40) |
Dec
(4) |
2016 |
Jan
(9) |
Feb
|
Mar
(6) |
Apr
|
May
(10) |
Jun
(2) |
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
(1) |
2017 |
Jan
(2) |
Feb
(4) |
Mar
(1) |
Apr
(4) |
May
(31) |
Jun
(9) |
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(2) |
2018 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Jeff D. <jd...@ka...> - 2000-09-11 00:22:11
|
See http://sourceforge.net/bugs/?func=detailbug&bug_id=113500&group_id=429 It looks like reboot is broken more than I thought. This is probably an easy bug to fix. Just figure out why it's forgetting its command line, and the tracing thread rewriting it would be a likely possibility. So, just squirrel the arguments away somewhere and use them in case of a reboot. Jeff |
From: Lennert B. <bu...@gn...> - 2000-09-10 12:18:12
|
This looks wrong... (Repair filesystem) 3 # exit Unmounting file systems Automatic reboot in progress. Restarting system. tracing thread pid = 16805 [snip] Kernel command line: [(tracing thread)] thread)] root=/dev/ubd0 greetings, Lennert |
From: Jeff D. <jd...@ka...> - 2000-09-02 15:46:37
|
bu...@gn... said: > (gdb) bt > #0 panic (fmt=0x101689b0 "Segfault with no mm") at panic.c:54 > #1 0x100e1318 in segv (address=1367383224, ip=268986083, is_write=0, is_user=0) at trap_kern.c:36 > #2 0x100e1c8e in segv_handler (sig=11) at trap_user.c:266 > #3 0x100e7ec8 in __restore () at ../sysdeps/unix/sysv/linux/i386/sigaction.c:127 > #4 0x1008693c in nf_hook_slow (pf=2, hook=0, skb=0x50feac80, indev=0x10208878, outdev=0x0, okfn=0x100a4754 <ip_rcv_finish>) at netfilter.c:464 > #5 0x100a45f8 in ip_rcv (skb=0x50feac80, dev=0x10208878, pt=0x10203a40) at ip_input.c:424 > #6 0x1008aebb in net_rx_action (h=0x1020f870) at dev.c:1307 > #7 0x1000b725 in do_softirq () at softirq.c:77 > #8 0x100dd471 in do_IRQ (irq=1, user_mode=0) at irq.c:330 > #9 0x100ddb6d in sigio_handler (sig=29) at irq_user.c:53 > #10 0x100e7ec8 in __restore () at ../sysdeps/unix/sysv/linux/i386/sigaction.c:127 > #11 0x100e0b97 in fix_range (proc_mm=0x0, start_addr=1367343104, end_addr=1384120320) at /data/uml/kernel/linuxdev/include/asm/pgalloc.h:134 > #12 0x100e10b6 in flush_tlb_kernel_vm () at tlb.c:184 > #13 0x100e2f76 in _switch_to (prev=0x50398000, next=0x503ae000) at process_kern.c:215 > #14 0x10004e4c in schedule () at sched.c:636 > #15 0x10004ba0 in schedule_timeout (timeout=2147483647) at sched.c:413 > #16 0x100da6d6 in svc_recv (serv=0x5005b920, rqstp=0x50460c00, timeout=2147483647) at svcsock.c:827 > #17 0x10063e3e in lockd rqstp=0x50460c00) at svc.c:147 > #18 0x100e2dad in new_thread_proc (t=0x50398000) at process_kern.c:125 I think I fixed this: --- arch/um/kernel/process_kern.c~ Wed Aug 30 20:09:01 2000 +++ arch/um/kernel/process_kern.c Sat Sep 2 11:13:22 2000 @@ -212,8 +212,10 @@ current->thread.request.op = OP_SWITCH; current->thread.request.u.cswitch.to = next; forward_interrupts(to->thread.extern_pid); + block_signals(); usr1_pid(getpid()); flush_tlb_kernel_vm(); + unblock_signals(); return(current->thread.request.u.cswitch.from); } Jeff |
From: Jeff D. <jd...@ka...> - 2000-08-31 23:01:42
|
md...@al... said: > Lets leave it at this and maybe someone else w/ the same needs notices > it in the archives. I myself simply don't have the copious amount of > spare time nor synapses available right now. Uhm, maybe I should try > to get the Plex86 developers interested in using uml. Something else you might want to do is to diagnose the problems enough to write a reasonably detailed description of what needs doing. I could add that to my "things to be done" page. That would give it a bit more visibility than leaving it here in the archive. Jeff |
From: Bjorn E. <md...@al...> - 2000-08-31 21:05:00
|
> md...@al... said: > > I'm trying to boot dos under um-linux but didn't get very far. The > > first road-block was that /proc/cpuinfo doesn't provide much useful > > info. But even after I've unmounted /proc and created a fake > > cpuinfo-file dos-emu complains that "vm86plus service not available in > > your kernel". > > I think the main problem will be that uml doesn't implement the > x86-specific system calls, like vm86 and modify_ldt. If dos > (is this FreeDOS or something?) uses them, then someone needs > to implement them (and send me a patch) or persuade me that I > need to spend some of my copious free time figuring out what > they do and implementing them. ["copious free time", right. I think I'll put that on my business card :)] This is dosemu (http://www.dosemu.org/) which isn't a Dos in itself, just a 16bit PC & Dos compatible enviroment. I'm not actually booting any kind of Dos right now, just trying to run 16bit code. Lets leave it at this and maybe someone else w/ the same needs notices it in the archives. I myself simply don't have the copious amount of spare time nor synapses available right now. Uhm, maybe I should try to get the Plex86 developers interested in using uml. > If it doesn't need any extra system calls, then just let me know > what sorts of things it needs to see in /proc. > > What exactly are you doing? It's not clear to me how it is > useful to run dos under uml... I could tell you but I'd have to kil^H^H^H ask you not to laugh. I'm using dosemu here to support our legacy embedded system by writing glue logic to get the old inhouse 16bit multitasker running under 16 DOS (and now dosemu) which then runs under Linux. (To connect to this software I have to run our Windows programs under wine with a loopback serial connector, lots of fun :) Running all this under uml is perfect for tuning and debugging which I do right now under bochs instead (very slow). //Björnen. |
From: Jeff D. <jd...@ka...> - 2000-08-31 18:34:15
|
md...@al... said: > I'm trying to boot dos under um-linux but didn't get very far. The > first road-block was that /proc/cpuinfo doesn't provide much useful > info. But even after I've unmounted /proc and created a fake > cpuinfo-file dos-emu complains that "vm86plus service not available in > your kernel". I think the main problem will be that uml doesn't implement the x86-specific system calls, like vm86 and modify_ldt. If dos (is this FreeDOS or something?) uses them, then someone needs to implement them (and send me a patch) or persuade me that I need to spend some of my copious free time figuring out what they do and implementing them. If it doesn't need any extra system calls, then just let me know what sorts of things it needs to see in /proc. What exactly are you doing? It's not clear to me how it is useful to run dos under uml... Jeff |
From: Bjorn E. <md...@al...> - 2000-08-31 17:15:25
|
Hi list, I'm trying to boot dos under um-linux but didn't get very far. The first road-block was that /proc/cpuinfo doesn't provide much useful info. But even after I've unmounted /proc and created a fake cpuinfo-file dos-emu complains that "vm86plus service not available in your kernel". I'm using UM-Linux to create and debug my embedded rootfs. Very useful stuff, thanks to everyone involved. //Björnen. |
From: Andrea A. <an...@su...> - 2000-08-31 15:01:00
|
On Thu, 31 Aug 2000, Jeff Dike wrote: >I got rid of your heuristics for choosing between two conflicting maps. >Instead, I made the code more careful about blocking off the >0x40000000-0x60000000 region so that any mallocs that happen get mapped >outside that area. Ok, fine. >In your case, that mystery mapping turns out to be from the stdio library >mallocing a page or two as a buffer. I guessed that. You were using a buffer on the stack for the read(2) and that's why you didn't needed to explicitly skip the malloced area. I believe that the change will give more robusteness to the virtual boot process. >Have you managed to get uml booting beyond "init=/bin/sh"? As far as I'm >concerned, your problems are over now :-) Yes, I booted into the resque disk just fine (I only had to change some bit in the /sbin/init.d/boot /etc/fstab w.r.t. to devfs and /devfs/ubd/0 :) Thanks, Andrea |
From: Jeff D. <jd...@ka...> - 2000-08-31 14:20:12
|
an...@su... said: > This below other patch allows me to run user mode linux. I've put it in and it seems to be fine. I got rid of your heuristics for choosing between two conflicting maps. Instead, I made the code more careful about blocking off the 0x40000000-0x60000000 region so that any mallocs that happen get mapped outside that area. In your case, that mystery mapping turns out to be from the stdio library mallocing a page or two as a buffer. Have you managed to get uml booting beyond "init=/bin/sh"? As far as I'm concerned, your problems are over now :-) Jeff |
From: Laurent B. <Lau...@iu...> - 2000-08-31 07:40:21
|
>>>>> "Jeff" == Jeff Dike <jd...@ka...> writes: Jeff> Jeff> Are you running test7? I fixed something a lot like this a Jeff> couple of releases ago. Yes. I run the version found in the Debian tarball: Linux version 2.4.0-test7-1um (jd...@cc...) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #2 Thu Aug 24 12:51:12 EST 2000 -- Laurent. |
From: Jeff D. <jd...@ka...> - 2000-08-31 01:33:13
|
Lau...@iu... said: > Then uml kernel started to print an endless number of messages: > Failed to forward 15 to pid 16049, errno = 9 > When I restarted the deamon, uml printed the following: > Registering fd 15 twice > Irqs : 4, 4 > Ids : 0x5005cc00, 0x5005cc00 Are you running test7? I fixed something a lot like this a couple of releases ago. Jeff |
From: Laurent B. <Lau...@iu...> - 2000-08-29 16:21:57
|
Hi, I was trying various virtual network settings and the um_eth_net_util deamon crashed (sorry, no backtrace). Then uml kernel started to print an endless number of messages: Failed to forward 15 to pid 16049, errno = 9 When I restarted the deamon, uml printed the following: Registering fd 15 twice Irqs : 4, 4 Ids : 0x5005cc00, 0x5005cc00 Perhaps it would be a good idea to improve the error recovery of uml. When the um_eth_net_util deamon stops, it could print "connection with um_eth_net_util deamon lost" and behave as if one had pulled the RJ45 plug. -- Laurent. |
From: Andrea A. <an...@su...> - 2000-08-29 10:15:12
|
On Mon, 28 Aug 2000, Jeff Dike wrote: >I was beginning to wonder whether you were having any success at all :) I had success after that :)) >> The 0x40000000-0x40002000 was part of the kernel_maps because during >> the read_map function such 0x40000000-0x40002000 vma was present: > >> 40000000-40002000 rw-p 0000000000000000 00:00 0 > >That's bogus. That has to go away because that's where shared libraries are >going to load. Whatever mapped that memory there is going to be surprised Yes. Andrea |
From: Jeff D. <jd...@ka...> - 2000-08-28 19:21:44
|
dw...@in... said: > I saw this with 2.4.0-test6 but it seems to have gone away in -test7, > so I didn't bother to report it. (test6 was the binary I downloaded, > test7 I compiled myself, if that makes a difference) Bill Stearns reported the same thing about ping floods a while back and I thought I fixed the bug in test7. So, I was somewhat surprised to see it come back. Oh well. Jeff |
From: Jeff D. <jd...@ka...> - 2000-08-28 19:17:21
|
an...@su... said: > This below other patch allows me to run user mode linux. Thanks again for that. I was beginning to wonder whether you were having any success at all :) > The 0x40000000-0x40002000 was part of the kernel_maps because during > the read_map function such 0x40000000-0x40002000 vma was present: > 40000000-40002000 rw-p 0000000000000000 00:00 0 That's bogus. That has to go away because that's where shared libraries are going to load. Whatever mapped that memory there is going to be surprised when it finds a shared library there. Jeff |
From: David W. <dw...@in...> - 2000-08-28 17:56:33
|
On Sun, 27 Aug 2000, Lennert Buytenhek wrote: > > This one is easy... start a uml and flood ping it over the slip interface. > > "process stopped with signal 11" I saw this with 2.4.0-test6 but it seems to have gone away in -test7, so I didn't bother to report it. (test6 was the binary I downloaded, test7 I compiled myself, if that makes a difference) 2.4.0-test7 has now been up for three days, albeit fairly idle. I did install slocate just so it had _something_ to do each day, though :) -- dwmw2 |
From: Andrea A. <an...@su...> - 2000-08-28 17:51:13
|
On Sun, 27 Aug 2000, Andrea Arcangeli wrote: >This patch seems to work for both cases (I now reach "Kernel panic: VFS: >Unable to mount root fs on 62:00" at least :) This below other patch allows me to run user mode linux. There was a bug where two overlapping vmas was inserted (not sure if that bug was triggered by my changes to the read_map that uses the stdio library, maybe some dynamic allocation caused that vma to show up). load_elf_interp was inserting 0x40000000-0x40006000 into the kernel_maps during elf_map() and then later start_thread was calling add_kernel_vma that was inserting 0x40000000-0x40002000 that overlaps with the previous one loaded by the elf interpreter. This caused the vma list to become corrupted. The 0x40000000-0x40002000 was part of the kernel_maps because during the read_map function such 0x40000000-0x40002000 vma was present: andrea@inspiron:~ > cat /proc/11595/maps 10000000-10001000 r-xp 0000000000000000 03:06 775062 /home/andrea/kernel/devel/2.4.0-test7-umk/linux 10001000-1011f000 rwxs 0000000000000000 03:06 775063 /home/andrea/kernel/devel/2.4.0-test7-umk/vm_file (deleted) 1011f000-10131000 rwxs 0000000000000000 03:06 775069 /home/andrea/kernel/devel/2.4.0-test7-umk/vm_file (deleted) 10131000-1016c000 rwxs 0000000000000000 03:06 775070 /home/andrea/kernel/devel/2.4.0-test7-umk/vm_file (deleted) 1016c000-1016d000 rwxp 000000000003b000 00:00 0 40000000-40002000 rw-p 0000000000000000 00:00 0 50000000-51000000 rw-s 0000000000000000 03:06 775071 /home/andrea/kernel/devel/2.4.0-test7-umk/vm_file (deleted) bffff000-c0000000 rwxp 0000000000000000 00:00 0 That seems plain anonymous memory and at the time of the read_maps (during add_process_vmas while building the kernel_maps vma list) it was the only one with priority rw-p, so I identifyed it as the one with such priority to avoid to add it to the kernel_maps. Now I can boot fine using `./linux init=/bin/bash'. There was also a little bug while setting the vm_pgoff that have page granularity. New patch below against test7-1um. --- ./arch/um/include/user_util.h.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/include/user_util.h Sun Aug 27 18:12:07 2000 @@ -12,12 +12,6 @@ extern int unlockpt(int __fd); extern char *ptsname(int __fd); -#define LONG_LEN (8) -#define PERM_LEN (4) -#define DEV_LEN (2) -#define LONG_DEC_LEN (10) -#define SIG_LEN (2) - #ifndef _UNISTD_H extern int write(int, const char *, int); #endif @@ -56,12 +50,12 @@ extern int physmem_inode; -extern int open_maps(void); -extern int read_map(int fd, unsigned long *start_out, unsigned long *end_out, +extern void * open_maps(void); +extern int read_map(void *, unsigned long *start_out, unsigned long *end_out, char *r_out, char *w_out, char *x_out, char *p_out, - unsigned long *offset_out, unsigned long *major_out, + unsigned long long *offset_out, unsigned long *major_out, unsigned long *minor_out, unsigned int *inode_out); -extern void close_maps(int fd); +extern void close_maps(void *); extern unsigned long get_brk(void); extern int file_size(char *file); extern void stop(void); --- ./arch/um/include/kern_util.h.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/include/kern_util.h Mon Aug 28 03:17:42 2000 @@ -58,7 +58,7 @@ extern void ret_from_sys_call(void *t); extern void add_perm_vma(unsigned long start, unsigned long end, char rperm, char wperm, char xperm, char private, - unsigned long offset); + unsigned long long offset); extern void kern_finish_exec(void *task, unsigned long ip, unsigned long sp, int pid); extern int page_size(void); --- ./arch/um/kernel/mem.c.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/kernel/mem.c Mon Aug 28 04:09:42 2000 @@ -38,17 +38,21 @@ static void add_process_vmas(void) { - unsigned long start, end, offset, major, minor; - int fd, inode; + unsigned long start, end, major, minor; + unsigned long long offset; + int inode; char rperm, wperm, xperm, private; + void * maps; - fd = open_maps(); - while(read_map(fd, &start, &end, &rperm, &wperm, &xperm, &private, + maps = open_maps(); + while(read_map(maps, &start, &end, &rperm, &wperm, &xperm, &private, &offset, &major, &minor, &inode)){ + if (rperm == 'r' && wperm == 'w' && xperm == '-' && private == 'p') + continue; add_perm_vma(start, end, rperm, wperm, xperm, private, offset); } add_perm_vma(high_physmem, end_vm, 'r', 'w', 'x', '-', 0); - close_maps(fd); + close_maps(maps); } void mem_init(void) --- ./arch/um/kernel/user_util.c.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/kernel/user_util.c Mon Aug 28 00:09:55 2000 @@ -23,78 +23,69 @@ #include "kern_util.h" #include "user.h" -int open_maps(void) +static int create_vm_file(unsigned long len) { int fd; - char proc_map[sizeof("/proc/#####/maps")]; + char zero; - sprintf(proc_map, "/proc/%d/maps", getpid()); - fd = open(proc_map, O_RDONLY, 0); - if(fd < 0){ - perror("open_maps"); + if((fd = open("vm_file", O_RDWR | O_CREAT | O_EXCL, 0777)) < 0){ + perror("open - cannot create ./vm_file"); + exit(1); + } + if(unlink("vm_file") < 0){ + perror("unlink"); + exit(1); + } + if(lseek(fd, len, SEEK_SET) < 0){ + perror("lseek"); + exit(1); + } + zero = 0; + if(write(fd, &zero, 1) != 1){ + perror("write"); exit(1); } return(fd); } -static char *read_one_map(int fd, char *buf, int fixed, int var) +void * open_maps(void) { - int i, res; - char *ptr, c; + FILE * maps; - res = read(fd, buf, fixed); - if(res == 0) return(NULL); - else if(res < fixed){ - perror("Reading fixed portion of map"); - exit(1); - } - ptr = &buf[fixed]; - for(i=0;i<var;i++){ - res = read(fd, ptr, 1); - if(res < 1){ - perror("Reading fixed portion of map"); - exit(1); - } - if(*ptr == ' '){ - *ptr = '\0'; - break; - } - else if(*ptr == '\n'){ - *ptr = '\0'; - return(buf); - } - ptr++; - } - do { - res = read(fd, &c, 1); - if(res < 1){ - perror("Reading variable portion of map"); - exit(1); - } - } while(c != '\n'); - return(buf); -} + maps = fopen("/proc/self/maps", "r"); + if(!maps) + perror("open_maps") , exit(1); -#define MAP_FIXED_LEN (LONG_LEN + 1 + LONG_LEN + 1 + PERM_LEN + 1 + \ - LONG_LEN + 1 + DEV_LEN + 1 + DEV_LEN + 1) -#define MAP_VAR_LEN (LONG_DEC_LEN) + return maps; +} -int read_map(int fd, unsigned long *start_out, unsigned long *end_out, +int read_map(void * maps, unsigned long *start_out, unsigned long *end_out, char *r_out, char *w_out, char *x_out, char *p_out, - unsigned long *offset_out, unsigned long *major_out, + unsigned long long *offset_out, unsigned long *major_out, unsigned long *minor_out, unsigned int *inode_out) { unsigned int inode; - unsigned long start, end, major, minor, offset; - char map_buf[MAP_FIXED_LEN + MAP_VAR_LEN], r, w, x, p; - - if(read_one_map(fd, map_buf, MAP_FIXED_LEN, MAP_VAR_LEN) == NULL) - return(0); - if(sscanf(map_buf, "%lx-%lx %c%c%c%c %lx %lx:%lx %d", &start, &end, &r, &w, - &x, &p, &offset, &major, &minor, &inode) != 10){ - perror("Scanning a map line"); - exit(1); + unsigned long start, end, major, minor, ret; + unsigned long long offset; + char r, w, x, p; + char seek; + FILE * __maps = (FILE *) maps; + + ret = fscanf(__maps, "%lx-%lx %c%c%c%c %Lx %lx:%lx %d", &start, &end, &r, &w, + &x, &p, &offset, &major, &minor, &inode); + + if (ret == EOF) + return 0; + if (ret != 10) + perror("Scanning a map line"), exit(1); + + for (;;) { + if (!fread(&seek, 1, 1, __maps)) + perror("Seeking a map line"), exit(1); + if (seek == '\n') + break; } + if(start_out != NULL) *start_out = start; if(end_out != NULL) *end_out = end; if(r_out != NULL) *r_out = r; @@ -108,45 +99,24 @@ return(1); } -void close_maps(int fd) +void close_maps(void * maps) { - close(fd); -} - -static int create_vm_file(unsigned long len) -{ - int fd; - char zero; + FILE * __maps = (FILE *) maps; - if((fd = open("vm_file", O_RDWR | O_CREAT | O_EXCL, 0777)) < 0){ - perror("open - cannot create ./vm_file"); - exit(1); - } - if(unlink("vm_file") < 0){ - perror("unlink"); - exit(1); - } - if(lseek(fd, len, SEEK_SET) < 0){ - perror("lseek"); - exit(1); - } - zero = 0; - if(write(fd, &zero, 1) != 1){ - perror("write"); - exit(1); - } - return(fd); + if (fclose(__maps) == EOF) + perror("close_maps"), exit(1); } void remap_data(void *segment_start, void *segment_end) { void *addr; unsigned long start, end, size; - int fd, data, prot; + int data, prot; char r, w, x; + void * maps; - fd = open_maps(); - while(read_map(fd, &start, &end, &r, &w, &x, NULL, NULL, NULL, NULL, + maps = open_maps(); + while(read_map(maps, &start, &end, &r, &w, &x, NULL, NULL, NULL, NULL, NULL) != 0){ if(((unsigned long) segment_start >= start) && ((unsigned long) segment_end <= end)){ @@ -165,7 +135,7 @@ printf("switcheroo failed\n"); exit(1); } - close_maps(fd); + close_maps(maps); return; } } --- ./arch/um/kernel/tlb.c.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/kernel/tlb.c Mon Aug 28 04:10:12 2000 @@ -230,17 +230,22 @@ static int num_process_vmas = 0; void add_perm_vma(unsigned long start, unsigned long end, char rperm, - char wperm, char xperm, char private, unsigned long offset) + char wperm, char xperm, char private, unsigned long long offset) { struct vm_area_struct *vma; if(process_vmas == NULL){ - int fd, count = 0; - fd = open_maps(); - while(read_map(fd, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL)) + int count = 0; + char r, w, x, p; + void * maps; + maps = open_maps(); + while(read_map(maps, NULL, NULL, &r, &w, &x, &p, NULL, + NULL, NULL, NULL)) { + if (r == 'r' && w == 'w' && x == '-' && p == 'p') + continue; count++; - close_maps(fd); + } + close_maps(maps); process_vmas = alloc_bootmem((count + 1) * sizeof(*process_vmas)); if(process_vmas == NULL) @@ -251,7 +256,7 @@ &kernel_maps, start, end, NULL, vm_prot(rperm, wperm, xperm, private), vm_flags(rperm, wperm, xperm, private), 0, NULL, NULL, NULL, - NULL, NULL, offset, NULL, 0 + NULL, NULL, offset >> PAGE_SIZE, NULL, 0 }); insert_vm_struct(&kernel_maps, vma); } --- ./arch/um/Makefile.~1~ Sat Aug 26 17:36:29 2000 +++ ./arch/um/Makefile Sat Aug 26 17:48:28 2000 @@ -47,7 +47,7 @@ linux: $(ARCH_SYMLINKS) $(ARCH_DIR)/main.o vmlinux $(ARCH_DIR)/link.ld mv vmlinux vmlinux.o gcc -Wl,-T,$(ARCH_DIR)/link.ld $(LINK_PROFILE) -o linux -static \ - $(ARCH_DIR)/main.o vmlinux.o + $(ARCH_DIR)/main.o vmlinux.o -L/usr/lib rm -f $(ARCH_DIR)/link.ld USER_CFLAGS = $(patsubst -I%,,$(CFLAGS)) Andrea PS. I'm offlist so CC directly if you want me to read the reply ;) |
From: Jeff D. <jd...@ka...> - 2000-08-28 14:20:37
|
I guess I have figure out how to build uml under 6.2... In any case, > unresolved symbol __bb_init_func > unresolved symbol mcount Neither of these are my symbols. mcount is produced when you turn on profiling, so it looks like your module is compiled with -pg. Turn that off and mcount will go away. __bb_init_func is not present anywhere in the kernel. Jeff |
From: Rainer B. <rb...@co...> - 2000-08-28 10:55:16
|
Hi I have some trouble getting test 7 to work. I am using a Redhat 6.2 i386 distribution. I downloaded test7 and the patch. After making xconfig I tried to compile the whole thing but I get the following error: gcc -Wl,-T,/export/rburgst/uml/linux/arch/um/link.ld -pg -DPROFILING -Wl,--wrap,__monstartup -o linux -static \ /export/rburgst/uml/linux/arch/um/main.o vmlinux.o vmlinux.o: In function `sprintf': /export/rburgst/uml/linux/lib/vsprintf.c:315: multiple definition of `sprintf' arch/um/kernel/unmap_fin.o:/usr/src/bs/BUILD/glibc-2.1.3/stdio-common/sprintf.c:33: first defined here /usr/bin/ld: Warning: size of symbol `sprintf' changed from 20 to 42 in vmlinux.o vmlinux.o: In function `strpbrk': /export/rburgst/uml/linux/lib/string.c:204: multiple definition of `strpbrk' arch/um/kernel/unmap_fin.o(.text+0x296c0):strpbrk: first defined here /usr/bin/ld: Warning: size of symbol `strpbrk' changed from 178 to 109 in vmlinux.o collect2: ld returned 1 exit status make: *** [linux] Error 1 I tracked the problem down to unmap_fin.o which is linked with libc (dont know why). Well, I changed the Makefile to not link it with libc and that worked! However running the kernel results in a segfault right at the beginning. So I downloaded the precompiled kernel and tried my luck. It boots!! BUT, when loading the kernel module I am working on I get the following error. unresolved symbol __bb_init_func unresolved symbol mcount Since I cant compile the kernel myself I am not able to export these symbols. Can anybody help me, pleeeaaassse??? Regards - Rainer Burgstaller --------------------------------------------------------------------------------------------- Rainer Burgstaller Student of the University of Computer Science, Salzburg, Austria mailto:rb...@co... VoiceBox: +49 2561 959-13987 Fax: +49 2561 959-13987 ---------------------------------------------------------------------------------------------- |
From: Jeff D. <jd...@ka...> - 2000-08-27 18:52:35
|
> This patch seems to work for both cases (I now reach "Kernel panic: > VFS: Unable to mount root fs on 62:00" at least :) Thanks. I'll look this over and apply it. Jeff |
From: Lennert B. <bu...@gn...> - 2000-08-27 18:49:25
|
This one is easy... start a uml and flood ping it over the slip interface. "process stopped with signal 11" greetings, Lennert |
From: Andrea A. <an...@su...> - 2000-08-27 17:00:50
|
On Sat, 26 Aug 2000, Jeff Dike wrote: >an...@su... said: >> To link the final `linux` executable I need this patch: > >Thanks. Other problem, with 2.2.x lfs the maps file looks like this: andrea@laser:~ > cat /proc/self/maps 08048000-0804b000 r-xp 0000000000000000 03:02 55341 /bin/cat 0804b000-0804c000 rw-p 0000000000002000 03:02 55341 /bin/cat 40000000-40013000 r-xp 0000000000000000 03:02 61507 /lib/ld-2.1.2.so 40013000-40014000 rw-p 0000000000012000 03:02 61507 /lib/ld-2.1.2.so 40014000-40015000 rwxp 0000000000000000 00:00 0 4001e000-40111000 r-xp 0000000000000000 03:02 61512 /lib/libc.so.6 40111000-40115000 rw-p 00000000000f2000 03:02 61512 /lib/libc.so.6 40115000-40119000 rw-p 0000000000000000 00:00 0 bfffe000-c0000000 rwxp fffffffffffff000 00:00 0 Due LFS the file offset of the mapping can go over 2G. On 2.4.x we still print only 8 chars but it can overflow and it can print corrupted results, while 2.2.x-LFS handle that correctly but ./linux fails. This patch seems to work for both cases (I now reach "Kernel panic: VFS: Unable to mount root fs on 62:00" at least :) --- ./arch/um/include/user_util.h.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/include/user_util.h Sun Aug 27 18:12:07 2000 @@ -12,12 +12,6 @@ extern int unlockpt(int __fd); extern char *ptsname(int __fd); -#define LONG_LEN (8) -#define PERM_LEN (4) -#define DEV_LEN (2) -#define LONG_DEC_LEN (10) -#define SIG_LEN (2) - #ifndef _UNISTD_H extern int write(int, const char *, int); #endif @@ -56,12 +50,12 @@ extern int physmem_inode; -extern int open_maps(void); -extern int read_map(int fd, unsigned long *start_out, unsigned long *end_out, +extern void * open_maps(void); +extern int read_map(void *, unsigned long *start_out, unsigned long *end_out, char *r_out, char *w_out, char *x_out, char *p_out, - unsigned long *offset_out, unsigned long *major_out, + unsigned long long *offset_out, unsigned long *major_out, unsigned long *minor_out, unsigned int *inode_out); -extern void close_maps(int fd); +extern void close_maps(void *); extern unsigned long get_brk(void); extern int file_size(char *file); extern void stop(void); --- ./arch/um/kernel/mem.c.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/kernel/mem.c Sun Aug 27 18:12:35 2000 @@ -38,17 +38,19 @@ static void add_process_vmas(void) { - unsigned long start, end, offset, major, minor; - int fd, inode; + unsigned long start, end, major, minor; + unsigned long long offset; + int inode; char rperm, wperm, xperm, private; + void * maps; - fd = open_maps(); - while(read_map(fd, &start, &end, &rperm, &wperm, &xperm, &private, + maps = open_maps(); + while(read_map(maps, &start, &end, &rperm, &wperm, &xperm, &private, &offset, &major, &minor, &inode)){ add_perm_vma(start, end, rperm, wperm, xperm, private, offset); } add_perm_vma(high_physmem, end_vm, 'r', 'w', 'x', '-', 0); - close_maps(fd); + close_maps(maps); } void mem_init(void) --- ./arch/um/kernel/user_util.c.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/kernel/user_util.c Sun Aug 27 18:14:38 2000 @@ -23,78 +23,69 @@ #include "kern_util.h" #include "user.h" -int open_maps(void) +static int create_vm_file(unsigned long len) { int fd; - char proc_map[sizeof("/proc/#####/maps")]; + char zero; - sprintf(proc_map, "/proc/%d/maps", getpid()); - fd = open(proc_map, O_RDONLY, 0); - if(fd < 0){ - perror("open_maps"); + if((fd = open("vm_file", O_RDWR | O_CREAT | O_EXCL, 0777)) < 0){ + perror("open - cannot create ./vm_file"); + exit(1); + } + if(unlink("vm_file") < 0){ + perror("unlink"); + exit(1); + } + if(lseek(fd, len, SEEK_SET) < 0){ + perror("lseek"); + exit(1); + } + zero = 0; + if(write(fd, &zero, 1) != 1){ + perror("write"); exit(1); } return(fd); } -static char *read_one_map(int fd, char *buf, int fixed, int var) +void * open_maps(void) { - int i, res; - char *ptr, c; + FILE * maps; - res = read(fd, buf, fixed); - if(res == 0) return(NULL); - else if(res < fixed){ - perror("Reading fixed portion of map"); - exit(1); - } - ptr = &buf[fixed]; - for(i=0;i<var;i++){ - res = read(fd, ptr, 1); - if(res < 1){ - perror("Reading fixed portion of map"); - exit(1); - } - if(*ptr == ' '){ - *ptr = '\0'; - break; - } - else if(*ptr == '\n'){ - *ptr = '\0'; - return(buf); - } - ptr++; - } - do { - res = read(fd, &c, 1); - if(res < 1){ - perror("Reading variable portion of map"); - exit(1); - } - } while(c != '\n'); - return(buf); -} + maps = fopen("/proc/self/maps", "r"); + if(!maps) + perror("open_maps") , exit(1); -#define MAP_FIXED_LEN (LONG_LEN + 1 + LONG_LEN + 1 + PERM_LEN + 1 + \ - LONG_LEN + 1 + DEV_LEN + 1 + DEV_LEN + 1) -#define MAP_VAR_LEN (LONG_DEC_LEN) + return maps; +} -int read_map(int fd, unsigned long *start_out, unsigned long *end_out, +int read_map(void * maps, unsigned long *start_out, unsigned long *end_out, char *r_out, char *w_out, char *x_out, char *p_out, - unsigned long *offset_out, unsigned long *major_out, + unsigned long long *offset_out, unsigned long *major_out, unsigned long *minor_out, unsigned int *inode_out) { unsigned int inode; - unsigned long start, end, major, minor, offset; - char map_buf[MAP_FIXED_LEN + MAP_VAR_LEN], r, w, x, p; - - if(read_one_map(fd, map_buf, MAP_FIXED_LEN, MAP_VAR_LEN) == NULL) - return(0); - if(sscanf(map_buf, "%lx-%lx %c%c%c%c %lx %lx:%lx %d", &start, &end, &r, &w, - &x, &p, &offset, &major, &minor, &inode) != 10){ - perror("Scanning a map line"); - exit(1); + unsigned long start, end, major, minor, ret; + unsigned long long offset; + char r, w, x, p; + char seek; + FILE * __maps = (FILE *) maps; + + ret = fscanf(__maps, "%lx-%lx %c%c%c%c %Lx %lx:%lx %d", &start, &end, &r, &w, + &x, &p, &offset, &major, &minor, &inode); + + if (ret == EOF) + return 0; + if (ret != 10) + perror("Scanning a map line"), exit(1); + + for (;;) { + if (!fread(&seek, 1, 1, __maps)) + perror("Seeking a map line"), exit(1); + if (seek == '\n') + break; } + if(start_out != NULL) *start_out = start; if(end_out != NULL) *end_out = end; if(r_out != NULL) *r_out = r; @@ -108,45 +99,24 @@ return(1); } -void close_maps(int fd) +void close_maps(void * maps) { - close(fd); -} - -static int create_vm_file(unsigned long len) -{ - int fd; - char zero; + FILE * __maps = (FILE *) maps; - if((fd = open("vm_file", O_RDWR | O_CREAT | O_EXCL, 0777)) < 0){ - perror("open - cannot create ./vm_file"); - exit(1); - } - if(unlink("vm_file") < 0){ - perror("unlink"); - exit(1); - } - if(lseek(fd, len, SEEK_SET) < 0){ - perror("lseek"); - exit(1); - } - zero = 0; - if(write(fd, &zero, 1) != 1){ - perror("write"); - exit(1); - } - return(fd); + if (fclose(__maps) == EOF) + perror("close_maps"), exit(1); } void remap_data(void *segment_start, void *segment_end) { void *addr; unsigned long start, end, size; - int fd, data, prot; + int data, prot; char r, w, x; + void * maps; - fd = open_maps(); - while(read_map(fd, &start, &end, &r, &w, &x, NULL, NULL, NULL, NULL, + maps = open_maps(); + while(read_map(maps, &start, &end, &r, &w, &x, NULL, NULL, NULL, NULL, NULL) != 0){ if(((unsigned long) segment_start >= start) && ((unsigned long) segment_end <= end)){ @@ -165,7 +135,7 @@ printf("switcheroo failed\n"); exit(1); } - close_maps(fd); + close_maps(maps); return; } } --- ./arch/um/kernel/tlb.c.~1~ Sat Aug 26 16:35:04 2000 +++ ./arch/um/kernel/tlb.c Sun Aug 27 18:13:26 2000 @@ -235,12 +235,13 @@ struct vm_area_struct *vma; if(process_vmas == NULL){ - int fd, count = 0; - fd = open_maps(); - while(read_map(fd, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + int count = 0; + void * maps; + maps = open_maps(); + while(read_map(maps, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) count++; - close_maps(fd); + close_maps(maps); process_vmas = alloc_bootmem((count + 1) * sizeof(*process_vmas)); if(process_vmas == NULL) Andrea |
From: David W. <dw...@in...> - 2000-08-27 16:53:36
|
On Fri, 25 Aug 2000, David Woodhouse wrote: > ku...@ms... said: > > Ethertap device has just been replaced. > > netlink_dev is open for removal rather than for improvements. > > OK. The new Ethertap in 2.4 looks far nicer. Upon further investigation, I'll revise that opinion. Regardless of being a cleaner implementation, the functionality isn't the same. I don't like the way that you have to ifconfig the tap interface after the UML has opened the character device. It means that the UML still has to have a suid helper. I preferred the old behaviour where the interface could be configured _once_ by root on the host, and the UML could open and close the device as many times at it wanted to without needing root to intervene again. -- dwmw2 |
From: Lennert B. <bu...@gn...> - 2000-08-27 16:50:00
|
I have a way with these things... loaded modules at this time are ip_tables, iptable_mangle, iptable_nat, iptable_filter, ipt_state. uml --- Unmounting NFS filesystems [hangs right there] bt -- Breakpoint 3, panic (fmt=0x101689b0 "Segfault with no mm") at panic.c:54 54 va_start(args, fmt); (gdb) bt #0 panic (fmt=0x101689b0 "Segfault with no mm") at panic.c:54 #1 0x100e1318 in segv (address=1367383224, ip=268986083, is_write=0, is_user=0) at trap_kern.c:36 #2 0x100e1c8e in segv_handler (sig=11) at trap_user.c:266 #3 0x100e7ec8 in __restore () at ../sysdeps/unix/sysv/linux/i386/sigaction.c:127 #4 0x1008693c in nf_hook_slow (pf=2, hook=0, skb=0x50feac80, indev=0x10208878, outdev=0x0, okfn=0x100a4754 <ip_rcv_finish>) at netfilter.c:464 #5 0x100a45f8 in ip_rcv (skb=0x50feac80, dev=0x10208878, pt=0x10203a40) at ip_input.c:424 #6 0x1008aebb in net_rx_action (h=0x1020f870) at dev.c:1307 #7 0x1000b725 in do_softirq () at softirq.c:77 #8 0x100dd471 in do_IRQ (irq=1, user_mode=0) at irq.c:330 #9 0x100ddb6d in sigio_handler (sig=29) at irq_user.c:53 #10 0x100e7ec8 in __restore () at ../sysdeps/unix/sysv/linux/i386/sigaction.c:127 #11 0x100e0b97 in fix_range (proc_mm=0x0, start_addr=1367343104, end_addr=1384120320) at /data/uml/kernel/linuxdev/include/asm/pgalloc.h:134 #12 0x100e10b6 in flush_tlb_kernel_vm () at tlb.c:184 #13 0x100e2f76 in _switch_to (prev=0x50398000, next=0x503ae000) at process_kern.c:215 #14 0x10004e4c in schedule () at sched.c:636 #15 0x10004ba0 in schedule_timeout (timeout=2147483647) at sched.c:413 #16 0x100da6d6 in svc_recv (serv=0x5005b920, rqstp=0x50460c00, timeout=2147483647) at svcsock.c:827 #17 0x10063e3e in lockd (rqstp=0x50460c00) at svc.c:147 #18 0x100e2dad in new_thread_proc (t=0x50398000) at process_kern.c:125 |
From: Lennert B. <bu...@gn...> - 2000-08-27 15:07:50
|
On Sun, 27 Aug 2000, Jeff Dike wrote: > > Hmm.. somehow this doesn't want to work. > > Make that "fake_arch". Yup, that works. Thanks. I should really dig into the source one of these days. Speaking of source: what I found confusing about the umn fake ethernet devices is that you need to 'up' them first, and then set the MAC address. With normal ethernet devices, you do this exactly the other way round. > > Since I started booting umls with the 'debug' option, the panics > > didn't come back (yet). Excellent panic-repellant, it seems. > > Yeah, races tend to go away. Are you running test7 yet? Yup. Since it came out. > Have you seen that panic in test7? Actively trying to provoke, but no luck yet. greetings, Lennert |