1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
186
186
EMPFEHLEN
-
Hi Leute,
ich habe mal wieder ein Problem bei meinem Gstreamer Plugin bei dem ich im Moment nicht weiterkomme. Ich bekomme ab und an während der Ausführung einen SIGSEGV geschmissen, allerdings konnten mir bisher weder gdb noch valgrind weiterhelfen. Vielleicht hat einer von euch eine Idee.
Laut gdb tritt der Fehler in folgender Zeile meines Programms auf:
Code cpp:1
xmltio::Location templateloc(TEMPLATE, "SOUND");
Wobei TEMPLATE folgendes ist:
Code cpp:1 2 3 4 5
const std::string TEMPLATE = "<SOUND>" "<DURATION timeInSeconds=\"\"/>" "<FREQUENCIES nrValues=\"\" value0=\"\" value1=\"\" value2=\"\" value3=\"\" value4=\"\" value5=\"\"/>" "</SOUND>";
Und valgrind sagt mir folgendes:
Code :1 2 3
valgrind: m_mallocfree.c:210 (get_bszB_as_is): Assertion 'bszB_lo == bszB_hi' failed. valgrind: Heap block lo/hi size mismatch: lo = 4288479132, hi = 1632849498. Probably caused by overrunning/underrunning a heap block's bounds.
Ich hänge das Plugin mal als zip an diesen Post an, falls jemand Interesse hat da rein zu schauen. Im Moment sind mir die Ideen ausgegangen. Kann sein, dass ich Fehler bei der Verwendung der std::vector - en mache, dass kann gut sein.
Ich teste das Plugin im Moment mit folgender Kette:
Code :1
gst-launch-0.10 alsasrc device=plug:hw:1 ! audioanalyse ! alsasink
Falls jemand das selbst ausprobieren will, braucht er zum kompilieren die gstreamer libs und die xmltio lib.
Gruß
Der WolfGeändert von Der Wolf (01.09.10 um 16:47 Uhr) Grund: Missing G added.
-
01.09.10 16:30 #2
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Hi.
Es heißt SIGSEGV (signal segment violation).
Warum definierst du TEMPLATE im Header?
Du hast delete statt delete[] verwendet.
\edit: Der Fehler dürfte allerdings hier sein:
Du schreibst da etwas in den Vektor ohne zu prüfen ob überhaupt genug Platz im Vektor ist. Danach prüfst du sogar noch ob du über die Größe des Vektors hinausgeschrieben hast...Code cpp:1 2 3
// Copy new signal into vector. memcpy(&signal[nrSamples], (gint16*) buffer->data, buffer->size); nrSamples += buffer->size / sizeof(gint16);
Und Makros sollte man äußerst sparsam einsetzen, eine inline Funktion ist (fast) immer vorzuziehen.
Außerdem würde ich einfach nur den Vektor benutzen statt die nrSamples noch extra mitzuzählen...
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14
const int sig_max = 44100; signal.reserve(sig_max); const gint16* d = reinterpret_cast<const gint16*>(buffer->data); signal.insert(signal.end(), d, d + std::min(sig_max - signal.size(), buffer->size / sizeof(gint16))); if (signal.size() == sig_max) { // verarbeiten ... signal.clear(); }
Geändert von deepthroat (02.09.10 um 09:47 Uhr) Grund: Fehler bei Indexberechnung
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hmm,
ja, hab mal wieder das G vergessen.
Die Definition im Header war jetzt einfach so. Sollte auch doch erstmal egal sein, oder? Nur vielleicht etwas ungeschickt, aber da die Header Datei im Moment noch nirgendwo sonst eingebunden wird, vorerst egal.
Ich hab das delete[] verbessert, bekomme jetzt allerdings den Fehler in der Zeile mit dem delete[].
Edit: Ah ok. Vielen Dank. Das scheint den Fehler wirklich behoben zu haben. Ich hatte vergessen mal durchzurechnen ob es geschehen kann, dass die Samples die ich in den Vektor schreibe mehr sind, als der std::vector fassen kann und ich dadurch mit memcpy eventuell in den falschen Speicher schreibe. Vielen vielen Dank.
Gruß
Der WolfGeändert von Der Wolf (01.09.10 um 17:56 Uhr)
Ähnliche Themen
-
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Problem mit hover- background ändern & Problem bei Reload
Von ollioollio im Forum CSSAntworten: 0Letzter Beitrag: 06.10.04, 14:03 -
PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
Von hennym im Forum Videoschnitt, Videotechnik & -produktionAntworten: 6Letzter Beitrag: 17.09.03, 22:09 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29





Zitieren
Login





