Serial.print corrupted data when relay board switch off

Hello,
I've a optocoupled relay board similar to this: http://img.dtmas.net/w10/x1/p67/i040_4.jpg
with separated power (jd-vcc vcc) according to this http://arduino-info.wikispaces.com/RelayIsolation
It seems something like a "Lentz law" but the diode parallel at the relay seems to work well (I tried to use another similar relay board too).

The fact is, when I switch off the relay, after a few cycles the data flowing in the serial windows become corrupted: some missing chars, unreadeable chars, ecc.

tried to run also the relay at 3.3v but it's the same story.

The program continues well. but Serial data are corrupted (or stop flowing)

I would don't mind, but I need to interface also a RTC ds1307 clock, and I encountered a couple of time that the oscillator of the clock stopped at relay switching off.
So this become very important, as I use the clock to pilote the relay, and I cannot permit myself that it stops responding..

Anyone has encountered similar issue?

I've simplified the code:

int relay = 8
void setup() {
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
Serial.begin(9600);
}
void loop() {
Serial.println("relay on");
digitalWrite(relay, LOW);
delay(6000);
Serial.println("relay off");
digitalWrite(relay, HIGH);
delay(6000);
}

Does that simplified code (once you have corrected the error with it) manifest the problem with Serial output that you describe ?
Does the problem still persist if there is nothing connected to the relay pin ?

oh, I forgot to write that if I disconnect the control relay pin the problem seems to disappear.

I can run longer the prog without any problem.

Is it possible that arduino sends raw data so serial monitor, and serial miss some bits and data become corrupted for this?
I mean... arduino sends some like 01001111 (8bits) and serial read 0100111 (7bits)

so all the next chars will be corrupted because serial missed 1 bit, and assigns the first bit of all the next chars to the previsious one.. wrong?

The serial output is sent and received byte by byte so there is no chance that sometimes 7 bits are used and at other times 8 bits are used. Is the relay being used to switch anything ? If so, what happens if you disconnect the load ?

I use the relay with a little acquarium water pump..
something like this: http://i1042.photobucket.com/albums/b421/dvd-2010/BOYU-SP-6013.jpg

First I tought to a sRAM memory issue, so I cutted all the code and I leaved it minimal as you've seen...

I used also to use with another program, to switch on/off a little water pillow like this:


In that case I used a little webserver to let me control the switching..
The problem was less frequent, but It still was present sometimes...

This is a breaking mind..