El Jue 27 Ago 2009 15:46:23 Eric J Korpela escribió:
> On Thu, Aug 27, 2009 at 11:43 AM, Eric J Korpela wrote:
> > Does anyone know what has changed in PROXY_INFO that causes segfaults
> > when boinc_get_init_data is called?  Did someone change the
> > init_data.xml format?  If so, is a segfault the best way to react if a
> > field is missing?  There was a time when the file wasn't required to
> > exists at all.
> >
> > The first stack dump is if init_data.xml doesn't exist.
> >
> > #0  0x029524ce in std::string::assign () from /usr/lib/libstdc++.so.6
> > #1  0x029525e4 in std::string::operator= () from /usr/lib/libstdc++.so.6
> > #2  0x08116a47 in PROXY_INFO::operator= (this=0x821ead4,
> > new_...@0x8264cf4) at proxy_info.cpp:192
> > #3  0x0810e65f in APP_INIT_DATA::copy (this=0x821d600, a...@0x8263820)
> >    at app_ipc.cpp:102
> > #4  0x0810e7a4 in APP_INIT_DATA::operator= (this=0x821d600, a...@0x8263820)
> >    at app_ipc.cpp:70
> > #5  0x0810a595 in boinc_get_init_data (app_init_da...@0x821d600)
> >    at boinc_api.cpp:644
> > #6  0x0804d102 in main (argc=1, argv=0xbfecacb4) at main.cpp:259
> >
> > The second is if it does...
> >
> > #0  0x029524ce in std::string::assign () from /usr/lib/libstdc++.so.6
> > #1  0x029525e4 in std::string::operator= () from /usr/lib/libstdc++.so.6
> > #2  0x08116a47 in PROXY_INFO::operator= (this=0x821ead4,
> > new_...@0x8264cf4) at proxy_info.cpp:192
> > #3  0x0810e65f in APP_INIT_DATA::copy (this=0x821d600, a...@0x8263820)
> >    at app_ipc.cpp:102
> > #4  0x0810e7a4 in APP_INIT_DATA::operator= (this=0x821d600, a...@0x8263820)
> >    at app_ipc.cpp:70
> > #5  0x0810a595 in boinc_get_init_data (app_init_da...@0x821d600)
> >    at boinc_api.cpp:644
> > #6  0x0804d102 in main (argc=1, argv=0xbfecacb4) at main.cpp:259
> 
> Oops the second stack dump.  (When app_info.xml does exist) should be
>
> #1  0x08116c0a in PROXY_INFO::clear (this=0x8264cf4) at proxy_info.cpp:168
> 168         socks_server_name.clear();
> (gdb) where
> #0  0x0295212f in std::string::clear () from /usr/lib/libstdc++.so.6
> #1  0x08116c0a in PROXY_INFO::clear (this=0x8264cf4) at proxy_info.cpp:168
> #2  0x08116ef4 in PROXY_INFO::parse (this=0x8264cf4, i...@0xbfbb0810)
>     at proxy_info.cpp:93
> #3  0x0810d811 in parse_init_data_file (f=0x9cef730, a...@0x8263820)
>     at app_ipc.cpp:260
> #4  0x0810b442 in boinc_parse_init_data_file () at boinc_api.cpp:598
> #5  0x0804d0f6 in main (argc=1, argv=0xbfbb0994) at main.cpp:258
>

parse_init_data clears the APP_INIT_DATA structure using memset, corrupting 
the internal structure of the std::string members.

-- 
Nicolas
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to