Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

1

19.09.2009, 21:37

Fehler beim Löschen

Hi

Ich habe ein kleines Problem, bei dem ich einfach nicht weiter weiß:
Ich versuche meine ParameterMap zu serialisieren. Das funktioniert auch alles,
bis auf das mein "sub-stream" nicht richtig gelöscht werden kann....
Da krieg ich folgende Meldung:

Quellcode

1
2
Unhandled exception at 0x1048797f in CrystalTimeTestD.exe:
0xC0000005: Access violation reading location 0xffffffff.


Ich hab echt keine Ahnung wie der Fehler entsteht :(

Hier wird die map serialisiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void ParamMap::serialize(SerializationStream& _stream)
{
    std::auto_ptr<SerializationStream> stream(_stream.newObject("ParameterMap"));

    
    for(std::map<String, Variant>::iterator it = m_ParamList.begin();
        it != m_ParamList.end();
        ++it)
    {

        std::auto_ptr<SerializationStream> objStream(stream->newObject("ParamMap-Item"));
        objStream->serialize(it->first);
        it->second.serialize(*objStream);
    }// <- Hier kommt ein Fehler

}


Und Hier wurde der sub-stream erzeugt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SerializationStream* XmlSerializationStream::newObject( const String& type )
{
    CT_NULL(m_StreamNode);

    TiXmlElement*   elem    = new TiXmlElement("object");
    elem->SetAttribute("type", type.c_str());

    m_StreamNode->LinkEndChild(elem);
    m_Current = elem;

    XmlSerializationStream* stream = new XmlSerializationStream("XmlSerializationStream: auto-creation");
    stream->open(m_Current->ToElement());

    return stream;
}


Hier noch ein paar Infos zum ganzen:
Also um die ParameterMap zu serialisieren, wird halt jedes Item durchgegangen
und in einen Serialisieruns-stream gegeben. In diesem Fall wird
als Stream ein Xml-Stream verwendet.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

20.09.2009, 18:46

Kommt der Fehler schon beim ersten Durchlauf? Versuch mal das Problem einzugrenzen.

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

3

21.09.2009, 10:07

Hier erstnochmal der Stack:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
SymInit: Symbol-SearchPath: '.;E:\C++\Workspace\CrystalTime\Bin;E:\C++\Workspace\CrystalTime\Bin;C:\WINDOWS;C:\WINDOWS\system32;SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'Tobias'
OS-Version: 5.1.2600 (Service Pack 2) 0x300-0x1
E:\C++\Workspace\CrystalTime\Bin\CrystalTimeTestD.exe:CrystalTimeTestD.exe (00400000), size: 192512 (result: 0), SymType: '-unknown-', PDB: 'E:\C++\Workspace\CrystalTime\Bin\CrystalTimeTestD.pdb'
C:\WINDOWS\system32\ntdll.dll:ntdll.dll (7C910000), size: 749568 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\kernel32.dll:kernel32.dll (7C800000), size: 1073152 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
E:\C++\Workspace\CrystalTime\Bin\CrystalTimeD.dll:CrystalTimeD.dll (10000000), size: 712704 (result: 0), SymType: '-unknown-', PDB: 'E:\C++\Workspace\CrystalTime\Bin\CrystalTimeD.pdb'
C:\WINDOWS\system32\ADVAPI32.dll:ADVAPI32.dll (77DA0000), size: 696320 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\RPCRT4.dll:RPCRT4.dll (77E50000), size: 593920 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\SHELL32.dll:SHELL32.dll (7C9D0000), size: 8511488 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 6.0.2900.2180
C:\WINDOWS\system32\msvcrt.dll:msvcrt.dll (77BE0000), size: 360448 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 7.0.2600.2180
C:\WINDOWS\system32\GDI32.dll:GDI32.dll (77EF0000), size: 286720 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\USER32.dll:USER32.dll (77D10000), size: 589824 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\SHLWAPI.dll:SHLWAPI.dll (77F40000), size: 483328 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 6.0.2900.2995
C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\MSVCP90D.dll:MSVCP90D.dll (10480000), size: 876544 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 9.0.21022.8
C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\MSVCR90D.dll:MSVCR90D.dll (10200000), size: 1191936 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 9.0.21022.8
C:\WINDOWS\system32\VERSION.dll:VERSION.dll (77BD0000), size: 32768 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\IMM32.DLL:IMM32.DLL (76330000), size: 118784 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll:comctl32.dll (773A0000), size: 1056768 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 6.0.2900.2180
C:\WINDOWS\system32\comctl32.dll:comctl32.dll (5D450000), size: 618496 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.82.2900.2180
C:\WINDOWS\system32\dbghelp.dll:dbghelp.dll (59DD0000), size: 659456 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
C:\WINDOWS\system32\Secur32.dll:Secur32.dll (77FC0000), size: 69632 (result: 0), SymType: '-exported-', PDB: '', fileVersion: 5.1.2600.2180
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 1048797F)
1048797F (MSVCP90D): (filename not available): std::_Container_base_secure::_Orphan_all
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 10487931)
10487931 (MSVCP90D): (filename not available): std::_Container_base_secure::~_Container_base_secure
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 10487A81)
10487A81 (MSVCP90D): (filename not available): std::_String_base::~_String_base
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 1049C731)
1049C731 (MSVCP90D): (filename not available): std::_String_val<char,std::_DebugHeapAllocator<char> >::~_String_val<char,std::_DebugHeapAllocator<char> >
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 1048ED4A)
1048ED4A (MSVCP90D): (filename not available): std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 1005FD3E)
1005FD3E (CrystalTimeD): (filename not available): ct::BasicStream::~BasicStream
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 10060686)
10060686 (CrystalTimeD): (filename not available): ct::SerializationStream::`vbase destructor'
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 100638EB)
100638EB (CrystalTimeD): (filename not available): ct::SerializationStream::`scalar deleting destructor'
e:\c++\visual c++\vc\include\memory (718): std::auto_ptr<ct::SerializationStream>::~auto_ptr<ct::SerializationStream>
e:\c++\workspace\crystaltime\source\parametermap.cpp (69): ct::ParamMap::serialize
e:\c++\workspace\crystaltime\crystaltimetest\main.cpp (25): test
e:\c++\workspace\crystaltime\crystaltimetest\main.cpp (61): MyApp::OnRun
e:\c++\workspace\crystaltime\source\application.cpp (41): ct::App::runAppWithFilter
e:\c++\workspace\crystaltime\source\application.cpp (28): ct::App::runApp
e:\c++\workspace\crystaltime\crystaltimetest\main.cpp (80): main
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (582): __tmainCRTStartup
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (399): mainCRTStartup
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7C816D4F)
7C816D4F (kernel32): (filename not available): RegisterWaitForInputIdle


Der Fehler kommt beim Ersten Aufruf... Hier passiert das ganze:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void test()
{
    ct::xml::XmlDocument doc;
    doc.create("FirstNode");

    ct::XmlSerializationStream stream("Stream");

    stream.open(doc.getFirstNode() );

    ct::ParamMap map;
    map.set("hallo", "Hallo und so");
    map.set("first", "abcdefghijklmnopqrstuvwxyz");
    map.set("second",1234);

    map.serialize(stream);

    doc.saveFile("hallo.txt");

}


Könnte es damit zusammenhängen, dass bis auf die Funktion Test, alles in ner Dll liegt ?

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

4

21.09.2009, 14:03

überprüf doch mal den d'tor von deiner stream klasse. anscheinend hängts sich ja darin auf.
"Don't trust your eyes: They are a hell of a lot smarter than you are"

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

22.09.2009, 15:15

Jo hab überall virtuelle Destruktoren hingepackt :)
Jetzt gehts...

Lag wohl daran, dass eine virtuelle Basisklasse daran beteilig war. ;)

Werbeanzeige