[Barrelfish-users] Possible bug?

Zeus Gómez Marmolejo zeus.gomez at bsc.es
Wed Sep 14 19:29:11 CEST 2011

Hi all,

I'm trying the Barrelfish' ability of sending large buffers (now 64kb)
between cores using flounder. And I'm experiencing a strange behaviour.
After sending some messages, and running it for about 1 min in QEMU, the
program segfaults or simply hangs. I'm not sure if I am doing something
wrong... I'm trying it with the latest version of Barrelfish.

The program is inspired in "usr/tests/idctest/idctest.c". It's spawning
another instance on core 1 and setting the binding. After that it creates
another thread to "dispatch events". The main loop in core 0 is sending
messages, while the main loop in core 1 is just waiting for a reply queue to
have some messages and send them back. It's using the same "test.if"
interface that idctest.c is using. I send it as an attachment. You can
simply try it by copying it over the existing idctest.c.

So, core 0 is sending a message to core 1:

*a = malloc(65536);*
*test_buf__tx(b, MKCONT(end, 0), a, 65536);*

before sending it, it obtains a lock to ensure that next message is not sent
before the previous one has been  already sent:

*  while (__sync_lock_test_and_set(&busy, true))*
*    thread_yield();*

The continuation closure is releasing the lock:

*static void end(void *r)*
*  free (a);*
*  busy = false;*

This function is being called always by the second thread, which is always
dispatching messages. I know this is not very efficient to use this
spinlock... Is there any other way to block the thread and wake it up by the
other thread?

Core 1 when receives the message:

*static void buf1(struct test_binding *b, uint8_t *p, size_t buflen)*
*  debug_printf("buf1 %u\n", p[65535]);*
*  ambf_buff_send(p);*

Simply prints the last position and sends it back to core 0: queuing it to
the other thread in order not to block the event dispatcher.

The program segfaults when accessing to buffer p, in the previous function,
as sometimes p is null. In any case, there is no error reported...

I would like to know if you see something wrong here ...

Many thanks!!

Zeus Gómez Marmolejo
Barcelona Supercomputing Center
PhD student
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20110914/aa23b5c0/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: idctest.c
Type: text/x-csrc
Size: 5951 bytes
Desc: not available
Url : https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20110914/aa23b5c0/attachment.bin 

More information about the Barrelfish-users mailing list