Aurélien Francillon wrote:
> you may be interested in this report i made some time ago, with stack
> trace ...
> http://sourceforge.net/tracker/index.php?func=detail&aid=1606811&group_id=28656&atid=393934
> (the report is a bit confusing, there is actually 2 different problems
> exposed )
> IIRC (not sure), i tracked it back to some known regression of gcc 4.1.x ...
>  it works fine with gcc-3.x

hm...

> there is also "kind of" patch there :
> https://naurel.org/svn/tinyos-2-overlay/dev-tinyos/tinyos-tools/files/TOSComm_wrap.cxx.racecondition.patch
> basically if you uncomment the "if(..) ; printf ... " stuff you will see
> that the pointer arg1 is null quite often

I tried this approach, and the results are very strange. basically if I
just add the following piece of code:

       try {
            if (arg1 == NULL) {
                std::cerr << "---------- arg == NULL ------------" <<
std::endl;
            }
            result = (bool)(arg1)->didEventOccur(arg2);
        } catch (comm_port_error &e) {
           ...


then the std::cerr << .. part _never_ gets executed, but it won't
segfault anymore (the whole thing still won't work though). if I just
comment out the std::cerr << .. part:

       try {
            if (arg1 == NULL) {
                //std::cerr << "---------- arg == NULL ------------" <<
std::endl;
            }
            result = (bool)(arg1)->didEventOccur(arg2);
        } catch (comm_port_error &e) {
           ...

it segfaults again....


I'll give it a try using gcc-3.x..


Akos
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to