pgubook-readers
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]