HI Przemek,

*Since this involves two processes that as you say stop simultaneously,*
> * I'd suspect a latent synchronization bug. You don't say how you*
> * interlock your shared memory,  but one possibility is that your reader*
> * code gets stuck because you overwrite the data while it's reading it.*
> * Debugging this type of thing is tricky, but maybe write a state*
> * machine that lights some LEDs that show the phases of your*
> * synchronization process, and wait to see where it's stuck.*


Currently, I have no synchronization. At one point I was using a byte in
shared memory as a binary stopgap, but after a while it was not working
predictably. Now, I'm re-reading documentation on POSIX semaphores, and
creating a semaphore in shared memory, instead of using a system wide
resource.

*I'd definitely look at this malformation---it could be the smoke from*
> * the real fire. Or not. In any case, this one should be easier to*
> * find---just wait for the message, inspect the data in firebug, and*
> * write a checker routine, inspecting your outgoing data, that watches*
> * for this type of distortion. *


The first thing that comes to mind here, which I forgot to add to my post
last night is that I am not zeroing out the shared memory file before
usage. I know this is bad . . .but am not convinced this is what the
problem is. However since it is / can be a one line of code fix. I will do
so. The odd thing here is that I get maybe 1-2 notifications an hour - If
that. Then it is inside the actual json object ( string pointer - e.g. char
*buffer ) - not outside.

What does all this mean to me. The first impression that I get out of this
is that it is a synchronization issue. I'm still not convinced though . . .

Also, for what it's worth. I'm using mmap() and not file open(), read(),
write(). So the code is very fast.

On Sun, Aug 23, 2015 at 6:40 AM, Przemek Klosowski <
[email protected]> wrote:

> On Sun, Aug 23, 2015 at 1:31 AM, William Hermans <[email protected]>
> wrote:
> > So I have a problem with some code I've been working on for the last few
> > months. The code, which is compiled into two separate processes suddenly
> > stops working. No error, nothing in dmesg, nothing in any file in
> /var/log
> > period. It did however occur to me that since rsyslog is likely or
> possible
> > disabled.
> >
> > What my code does is read from the CAN peripheral. Form extended packets
> out
> > of the CAN frames( NMEA 2000 fastpackets ), and then writes the data
> into a
> > POSIX shared memory file ( /dev/shm/file ).
>
> Since this involves two processes that as you say stop simultaneously,
> I'd suspect a latent synchronization bug. You don't say how you
> interlock your shared memory,  but one possibility is that your reader
> code gets stuck because you overwrite the data while it's reading it.
> Debugging this type of thing is tricky, but maybe write a state
> machine that lights some LEDs that show the phases of your
> synchronization process, and wait to see where it's stuck.
>
> > The second process simply reads
> > from the file, and shuffles the data out over a websocket in json / human
> > readable form. The data on the webside of things is tested accurate,
> > although I do occasionally get a malformed json object warning from
> firefox
> > firebug.
>
> I'd definitely look at this malformation---it could be the smoke from
> the real fire. Or not. In any case, this one should be easier to
> find---just wait for the message, inspect the data in firebug, and
> write a checker routine, inspecting your outgoing data, that watches
> for this type of distortion.
>
> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to