|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
random segfault
I appear to be encountering a very odd segfault. I have this method, and some odd output.
Methods: Code:
string ZomBDashboard::GetString(string name)
{
if (src != NULL)
{
debugf("Getting string.. (Deref: %p;", src);
System451::Communication::Dashboard::ZomBTCPSource &ts = *((System451::Communication::Dashboard::ZomBTCPSource*)src);
debugf(" deref OK, con: %d)", ts.connected);
return ts.Get(name);//or, src->Get(name)
}
return "";
}
...
const char* System451::Communication::Dashboard::ZomBTCPSource::Get(string name)
{
debugf(". in, \n");
Synchronized sync (sink);
return curvalues[name];
}
Code:
Getting string.. (Deref: 0xsomememoryaddressthatappearsvalid; deref OK, con: 4) data access (generic vxworks error info) Code:
Getting string.. (Deref: 0xsomememoryaddressthatappearsvalid; data access (generic vxworks error info) The robot code is attached in MyRobot.cpp and the C++ Bindings folder. The dashboard is Dashboard.exe and ZomB.dll (you might have to launch it twice), and when all is working, moving the slider on the left should move the slider on the right. if you feel like compiling ZomB, download all the code (in the trunk) at http://firstforge.wpi.edu/integratio...ystem=exsy1002 and copy the DashboardDataHub.cs in the zip into ZomBdll\NetAndDataProcessing |
|
#2
|
||||
|
||||
|
Re: random segfault
I've debugged it some more, and I am completely confused.
a variable is changing its address without being updated! I have the src variable, which is a pointer to a interface, and is assigned either null, or a new TCPsender. I then print out the pointer address, and it looks good. Later, after i'm enabled and in the telop function, I call GetString, and print out the address, then try to deref src, and ultimatly fail because somehow, src changed even though those are the only two active lines of code that reference src. Output attached (how does one copy and paste the text from the NetConsole? I could not get a sticking selection) Code: Code:
void OperatorControl(void)
{
cerr<<"IN oc"<<endl;
int loops=0;
while (IsEnabled())
{
cerr<<"looping";
cerr<<zb.GetString("ival")<<endl;
}
}
Code:
if ((mode & RemoteData) == RemoteData)
src = new System451::Communication::Dashboard::ZomBTCPSource();
else
src = 0;
debugf("init: src=%p\r\n", src);
Code:
string ZomBDashboard::GetString(string name)
{
if (src)
{
debugf("\r\ngsi: src=%p\r\n", src);
return src->Get(name);
}
return "";
}
|
|
#3
|
||||
|
||||
|
Re: random segfault
Ah! Copy constructors! gotta love (read: hate) them!
|
|
#4
|
|||
|
|||
|
Re: random segfault
Quote:
-Joe |
|
#5
|
|||
|
|||
|
Re: random segfault
By the way, the reason for this is so that you can hit <ctrl-c> and it will send that code to the cRIO instead of being processed by the console window.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Random? | TexasFederation | Programming | 1 | 09-16-2007 01:47 PM |
| Random Stuff | Brm789 | Chit-Chat | 11 | 11-20-2003 04:13 PM |
| How random is random???? | archiver | 1999 | 0 | 06-23-2002 09:59 PM |
| Random | Marc P. | Chit-Chat | 138 | 02-13-2002 03:11 PM |
| Random Question... | Jessica Boucher | Chit-Chat | 26 | 07-02-2001 09:37 PM |