[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pgubook-readers] lcomm Bug in Chapter 5
From: |
Mark Schmid |
Subject: |
[Pgubook-readers] lcomm Bug in Chapter 5 |
Date: |
Fri, 21 Sep 2007 11:58:03 +0200 |
Hi all!
Wow, great this list still works!
*Shess*, I sure could use it's help
with a big problem I am having! :-/
And sorry about my double-post yesterday, my
connection was lagging and it appeared like the
mail hadn't got sent.
Anyway, here's my really big problem: The "lcomm Bug":
I'm stuck in chapter 5, with the "toupper" program.
I typed it in, it assembles and links fine, but
when I try to execute it, I get this really weird
message from the shell that the programm got "killed"
and was not executed.
It seems somehow my Linux system or whatever is causing
me tremendous problems with the "lcomm" command line.
You know, this line here:
-------------------------
lcomm BUFFER_DATA, BUFFER_SIZE
-------------------------
On page 82 in the .section .bss.
I tipped in the program and it assembles and
links fine, but when I run it, I get a message
>from my Slackware shell (zsh):
--------------------------
zsh: killed toupper.exe
--------------------------
(I name all my executables .exe)
The new file is not generated.
I tried debugging it with gdb:
First I re-compiled it with:
as --gstabs toupper.s -o toupper.o
Then I re-linked it and then started gbd with:
gdb toupper.exe
gdb runs fine, but when I tried running the program
by typing: run
gdb replied:
-------------------------
Program terminated with SIGKILL, Killed.
The program no longer exists.
You can't do that without a process to debug.
<gdb>
-------------------------
After that I tried finding the error by hand
and did a lot experimenting and cutting. I now
have the problematic code shortened to the following
complete program which reproduces the error on my
Slackware 12.0 box:
---------------------------------------------
# lcommbug - Reproduces lcomm error!
.section .bss
.lcomm BUFFER_DATA, 500 # Reserve buffer
.section .text
.globl _start
_start:
movl $1, %eax # System call 1 to exit
movl $0, %ebx # Put exit code 0 in %ebx
movl $3, %ebx # Put exit code 3 in %ebx
int $0x80 # Interrupt call to Linux
---------------------------------------------
Here's the REALLY weird thing:
When I run this program it gets killed by
my shell as mentioned. However: If I comment
out the line containing the "lcomm" command,
OR EITHER one of the lines moving a value into
%ebx, I don't get the "killed" error and
everything's peachy!
Isn't that really weird?
- First I thought it was because of some defective
hard disks I was running, but now I have a 100% certified
error free hard disk and a brand new Linux Slackware 12.0
installation and it's doing the same thing.
The funny thing is, that with Slackware 9.1 (which I had
on this hard disk from an unused former Linux box before
re-installing Slackware 12) this error does NOT occur.
So far it only occurs on Slackware 12.0, not on Slackware
9.1. So maybe this has something to do with the new kernel
2.6?
I literally lost about 4 days with this problem and
my broken hard disks, re-installing Slackware about 6 times
and I still can't figure it out.
If anyone has an idea, boy I sure would be thankful
to get to the bottom of this.
Best regards,
Mark
--
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kanns mit allen: http://www.gmx.net/de/go/multimessenger
- [Pgubook-readers] lcomm Bug in Chapter 5,
Mark Schmid <=