redirecting the output of aspell

Hi,

I have 2 identical servers both running aspell but for some reason I can't redirect the output to a file on one of them. This is what I'm trying to do:

echo feck | aspell -l > errors.txt

On one machine this works fine but the other it doesn't (the file is created but it is empty). However if I just type:

echo feck | aspell -l

it correctly displays the word feck as being misspelt. I've done an strace and the machine that works shows this at the end:

fstat64(1, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
munmap(0x4033c000, 4046848) = 0
munmap(0x40718000, 159744) = 0
munmap(0x4001b000, 12288) = 0
write(1, "feck\n", 5) = 5
_exit(0) = ?

the machine that doesn't works shows this:
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40019000
munmap(0x4033b000, 4046848) = 0
munmap(0x40717000, 159744) = 0
_exit(0) = ?

If I leave off the >errors.txt is does this:
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40019000
write(1, "feck\n", 5feck
) = 5
munmap(0x4033b000, 4046848) = 0
munmap(0x40717000, 159744) = 0
_exit(0) = ?

Finally I've tried these:
$ echo feck >errors.out
works
$ echo feck | aspell -l | cat
fails

Can someone please help as I've now spent a day and a half on this?

Thanks,

Lee

P.S. Incase they're needed, here are the versions I'm using:

aspell -v
@(#) International Ispell Version 3.1.20 (but really Aspell .33.7 alpha)

cat /etc/redhat-release
Red Hat Linux Advanced Server release 2.1AS (Pensacola)

maybe:

echo feck | aspell -l  2>&1 | tee > errors.txt

It's most likely something defined in the local environment on the server that doesn't play nicely.

try

set > `hostname`.lis

on both machines, then do a diff on the two files.

Depending on your shell you may need to use a different command to display all of th environment variables....

unfortunately echo feck | aspell -l 2>&1 | tee > errors.txt didn't work either.

I've done a differences on the outputs of set and the only thing it threw up were the ones you'd expect to be different: SUDO_UID, PPID, HOSTNAME and then a few extras on the box that works to do with IBM director so I don't think it's the local environment that's causing the problem.

I've also compared /usr/lib/aspell, /usr/share/aspell and also the binary and they all identical.

Last thought - Are process limits (open files, number of processes allowed, etc)
very different on the "bad" box from the "good" box - for the user you are experimenting with?

The only way to compare binaries is with a check sum, most likely. Did you compare ldd outputs?

I'd try to remove and reinstall aspell - I'm guessing it's a Linux box - if it's feasable.

Quick reply; Try
echo feck | aspell -l 2>&1 | tee > errors.txt 2>&1

tried that and unfortunately it didn't work either

I uninstalled aspell and reinstalled and that didn't work either. I then had a quick go at installing the latest version of aspell but haven't got gcc installed. Tried installing that and found a load of incompatible dependancies. Then searching on the aspell website I came across a reference to the -a parameter. Interesingly this does actually send the results to stdout rather than the mysterious stream that -l sends them to. The output is a little different so I'll have to change my program to cater for it but that's okay by me. Thanks for everyone's help. FYI: here's the new results:

echo feck | aspell -a
@(#) International Ispell Version 3.1.20 (but really Aspell .33.7 alpha)
& feck 11 0: fleck, Deck, deck, fuck, Beck, Keck, Peck, beck, heck, neck, peck

This works regardless of whether I put > errors.txt or not.