Hi,
I run con-ux with: ./fiasco -G 800x600@16 -m 128 -l names -l dm_phys -l con-ux
The output is:
*con | Using fast memcpy. *con | Character size is 8x14, font has 256 characters *con | VESA reports 800x600@16 1600bpl (0000) [4096kB] *con | Color mapping: red=11:5 green=5:6 blue=0:5 res=0:0 ... .... *con | Mapping I/O UX video mem c0000000 => 00400000+000000 [4096kB] *con | Using MMXEXT for colorspace transform
KERNEL: 7.2 (tcb=201c1000) killed: Unhandled trap
EAX 00000025 EBX 0000122b ECX 0000000a EDX 00000000 ESI 00000320 EDI 00b0d73c EBP 012ffda8 ESP 012ffda4 EIP 00b0dc7f EFLAGS 00200206 CS 0002 SS 007b DS 007b ES 007b FS 0000 GS 0000 trap 13 (General Protection), error 00000402, from user mode (internal event regarding IDT gate descriptor no. 0x80)
The backtrace:
main // l4con/server/src/main.c do_switch vc_clear // vc.c vc_fill pslim_fill // pslim.c sw_fill
In "sw_fill", "vc->do_drty" equals 11589436, which seems invalid. Maybe, it should be NULL? Maybe, we should add "new->do_drty = fg_do_drty;" to line 402 in main.c?
Regards,
Wei
Hi Wei Shen,
On Friday 12 May 2006 10:48, Wei Shen wrote:
I run con-ux with: ./fiasco -G 800x600@16 -m 128 -l names -l dm_phys -l con-ux
You might add ``-l log'' here.
The output is:
*con | Using fast memcpy. *con | Character size is 8x14, font has 256 characters *con | VESA reports 800x600@16 1600bpl (0000) [4096kB] *con | Color mapping: red=11:5 green=5:6 blue=0:5 res=0:0 ... .... *con | Mapping I/O UX video mem c0000000 => 00400000+000000 [4096kB] *con | Using MMXEXT for colorspace transform
KERNEL: 7.2 (tcb=201c1000) killed: Unhandled trap
EAX 00000025 EBX 0000122b ECX 0000000a EDX 00000000 ESI 00000320 EDI 00b0d73c EBP 012ffda8 ESP 012ffda4 EIP 00b0dc7f EFLAGS 00200206 CS 0002 SS 007b DS 007b ES 007b FS 0000 GS 0000 trap 13 (General Protection), error 00000402, from user mode (internal event regarding IDT gate descriptor no. 0x80)
Please disassemble your con-ux binary, the instruction at the EIP is important:
objdump -ld 0x00b0dc7f
Frank
Hi,
Thanks for your help.
On Friday 12 May 2006 10:48, Wei Shen wrote:
I run con-ux with: ./fiasco -G 800x600@16 -m 128 -l names -l dm_phys -l con-ux
You might add ``-l log'' here.
I think it is not the cause :-)
Please disassemble your con-ux binary, the instruction at the EIP is important:
objdump -ld 0x00b0dc7f
00b0dc74 <trampoline>: trampoline(): b0dc74: e8 37 00 00 00 call b0dcb0 <int80_warning> b0dc79: 8d 64 24 04 lea 0x4(%esp),%esp b0dc7d: cf iret b0dc7e: 90 nop b0dc7f: 90 nop
But as I have noted, I think the original position of the error is in function sw_fill in pslim.c: ... if (vc->do_drty) vc->do_drty(x, y, w, h); ...
"vc->do_drty" equals 0x00b0d73c here which seems to be invalid. And I guess "new->do_drty" should be initialized to "fg_do_drty" (NULL) in function do_switch in main.c.
/usr/src/l4/pkg/l4con/server/src/con_hw/iomem.c:120 b0d735: 08 a3 23 b2 00 89 or %ah,0x8900b223(%ebx) b0d73b: 55 push %ebp b0d73c: 0c 8d or $0x8d,%al /usr/src/l4/pkg/l4con/server/src/con_hw/iomem.c:125 b0d73e: 65 gs b0d73f: f4 hlt b0d740: 5b pop %ebx b0d741: 5e pop %esi b0d742: 5f pop %edi b0d743: 5d pop %ebp /usr/src/l4/pkg/l4con/server/src/con_hw/iomem.c:120 b0d744: e9 23 a1 00 00 jmp b1786c <LOG_printf>
Regards,
Wei
Hi,
On Friday 12 May 2006 12:36, Wei Shen wrote:
On Friday 12 May 2006 10:48, Wei Shen wrote:
I run con-ux with: ./fiasco -G 800x600@16 -m 128 -l names -l dm_phys -l con-ux
You might add ``-l log'' here.
I think it is not the cause :-)
Of course not, that was only a hint.
Please disassemble your con-ux binary, the instruction at the EIP is important:
objdump -ld 0x00b0dc7f
00b0dc74 <trampoline>: trampoline(): b0dc74: e8 37 00 00 00 call b0dcb0 <int80_warning> b0dc79: 8d 64 24 04 lea 0x4(%esp),%esp b0dc7d: cf iret b0dc7e: 90 nop b0dc7f: 90 nop
That does not make much sense. Are you sure that you disassembled the same binary which caused the general protection? I assume not. But as I see something about int80 in your listing, I see the reason: Please add
-n7
to the command line options of Fiasco. The con-ux binary is trying to execute a Linux system call (int80) because it ``knows'' that it is running on Linux. The Fiasco kernel wouldn't allow this until you force him by adding this command line option.
But as I have noted, I think the original position of the error is in function sw_fill in pslim.c: ... if (vc->do_drty) vc->do_drty(x, y, w, h); ...
"vc->do_drty" equals 0x00b0d73c here which seems to be invalid. And I guess "new->do_drty" should be initialized to "fg_do_drty" (NULL) in function do_switch in main.c.
Again: Are you sure that you binary matches the binary you bootet? I don't think so. In fact, vc->do_drty is initialized at every time. It is set once in vc_open_out() and then never changed. You are right that we should switch it to fg_do_drty or bg_do_drty if we switch the vc into foreground/background. But this has nothing to do with your issue, it just forces the console to send update events more than necessary.
Kind regards,
Frank
Hi,
That does not make much sense. Are you sure that you disassembled the same binary which caused the general protection? I assume not.
Sorry! You are right, and I made a silly mistake.
It is an "int 0x80" instruction in lx_kill() in "lxfuxlibc/lib/src/lxfuxlc.c".
But I still think I am right at that the original cause. The backtrace is:
main // l4con/server/src/main.c do_switch vc_clear // vc.c vc_fill pslim_fill // pslim.c sw_fill vc->do_drty // = uxScreenUpdate // con_hw/ux.c lx_kill // lxfuxlibc/lib/src/lxfuxlc.c int 0x80
Regards,
Wei
On Friday 12 May 2006 15:48, Wei Shen wrote:
That does not make much sense. Are you sure that you disassembled the same binary which caused the general protection? I assume not.
Sorry! You are right, and I made a silly mistake.
It is an "int 0x80" instruction in lx_kill() in "lxfuxlibc/lib/src/lxfuxlc.c".
But I still think I am right at that the original cause. The backtrace is:
Excuse me, did you try adding -n7 as I suggested?
Frank
On Fri, 12 May 2006 22:22:02 +0800 Wei Shen (WS) wrote:
WS> I tried, but I also add "-l log" as you have suggested - so it should be WS> -n8. Forgive me ^_^. WS> WS> Thanks, but why not put an interpretation to the fiasco-ux website.
We're not going to add one because it's already there.
At http://os.inf.tu-dresden.de/fiasco/ux/using.shtml there is some text saying:
n tasknumber Allows the specified task number to perform native system calls and call directly into the Linux host kernel using int 0x80. This is useful for hybrid Linux/L4 programs.
If you think that is not good enough, you are of course welcome to suggest a better description.
- Udo
We're not going to add one because it's already there.
At http://os.inf.tu-dresden.de/fiasco/ux/using.shtml there is some text saying:
n tasknumber Allows the specified task number to perform native system calls and call directly into the Linux host kernel using int 0x80. This is useful for hybrid Linux/L4 programs.
If you think that is not good enough, you are of course welcome to suggest a better description.
I noticed the description and I knew "fiasco -h" also shows it, but what I meaned is that it may be difficult for a freshman to associate it with con-ux. Especially, that the example in the page with dope-ux does not need this option.
Of course, it may be just me that can not understand :-).
Regards,
Wei
l4-hackers@os.inf.tu-dresden.de