1 Mar 2008 05:20
Re: [E-devel] [PATCH][RFC] signal/select race problem in ecore_main
Carsten Haitzler <raster <at> rasterman.com>
2008-03-01 04:20:25 GMT
2008-03-01 04:20:25 GMT
On Sun, 24 Feb 2008 11:29:06 +0100 lars <at> segv.dk (Lars Munch) babbled: > On Sun, Feb 24, 2008 at 07:48:03PM +1100, Carsten Haitzler wrote: > > On Sun, 24 Feb 2008 15:43:18 +1100 Carsten Haitzler (The Rasterman) > > <raster <at> rasterman.com> babbled: > > > > actually - found a problem. breaks entrance it seems and enlightenment when > > init is enabled! :) back! > > Thanks for testing, too bad it didn't work out as expected. I do not use > entrance and have init disabled in enlightenment, so everything was > working flawlessly here :/ > > Anyway, I just did some more testing. It seems that using pselect we > have a bigger chance of losing signals. If we get the same signal > twice, while not waiting in the pselect call, then only one signal will > be handled at the time pselect is called. I guess this could cause the > breakage. Do you think that's the issue (I don't know the entrance nor > the init code) ? > > I have no idea how to solve this, except for going back to the pipe > solution. entrance and e both use signals. entranced waits for SIGUSR1 from x to know x is ready. e waits for something similar with a pause() from the init splash process. no singal ever arrives. pause() is never interrupted :) -- -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) raster <at> rasterman.com(Continue reading)
>
> I did change the file format to this version finally :
>
> /* Version 3 */
> /* NB: all int's are stored in network byte order on disk */
> /* file format: */
> int magic; /* magic number ie 0x1ee70f42 */
> int num_directory_entries; /* number of directory entries to follow */
> int num_dictionary_entries; /* number of dictionary entries to follow */
> struct
> {
> int data_offset; /* bytes offset into file for data chunk */
> int size; /* size of the data chunk */
> int data_size; /* size of the (uncompressed) data chunk */
> int name_offset; /* bytes offset into file for name string */
> int name_size; /* length in bytes of the name field */
> int flags; /* flags - for now 0 = uncompressed, 1 = compressed */
> } directory[num_directory_entries];
> struct
> {
> int hash;
> int offset;
> int size;
> int prev;
RSS Feed