Announcement

Collapse
No announcement yet.

Access Violation/Out of Memory bei Aufruf eines Com-Objektes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Access Violation/Out of Memory bei Aufruf eines Com-Objektes

    Hi

    I bin daran eine grössere Applikation (mit Borland C++ 6) mit einer Sms-Funktionalität (versenden, empfangenzu) zu versehen. Das Versenden der Sms-Komponente wird mit einer Third-Party Com-Komponente gemacht. (ActiveXperts Sms and pager Toolkit 4.1). Leider haben wird auf den meisten Rechnern beim Versenden Probleme beim Versenden. Sobald ein Sms, das versendet wird etwas länger ist, ca 15 zeichen, stürzt die Applikation ab (Out of Memory, Access Violation, andere Fehler, z.B. beim Zugriff auf die Datenbank). Kürze Sms verursachen keine Probleme. Wenn ich den Aufruf zum eigentlichen Versenden auskommentiere, läuft die Applikation stabil. Der Support des Sms-Tools konnte mir leider auch nicht helfen. Einige Hinweise lassen mich vermuten, dass das Problem tieferes Verständnis von Com verlangt. Untenstehend habe ich noch einige Fakten zusammengetragen:

    - Problem ist auf den meisten Rechnern einfach reproduzierbar, auf anderen Rechnern hingegen läuft die Applikation immer stabil.
    - Sobald die Länge des Sms ist enscheidend (auf Rechnern auf denen der Fehler reproduzierbar ist). Evtl. geht das dann aber den allozierten Speicherplatz der Com-Komponente hinaus. Kann ich mir aber irgendwie nicht vorstellen. Gemäss Hersteller sollte man Sms mit bis zu 160 Zeichen versenden können (Unicode 70).
    - Stack oder Heapsize verdoppeln hat keinen Einfluss
    - Unsere Applikation ist multithreaded. Es laufen mehrere Threads nebeneinander. Zudem behinhaltet diese Applikation einen eigenen Compiler und ein Memorymanagement für die compilierten Codestücke einer eigenen Programmiersprache. Evlt. kommen sich hier die Applikation und die Com-Komponente in die Quere
    - Ich habe eine Testapplikation geschrieben welche aus fast exakt dem gleiceh Code besteht um Sms zu versenden und zu empfangen. Dieser Code wird ebenfalls in einem Background thread ausgeführt. Hier kann ich den Fehler nicht reproduzieren. Der restliche Code beeinflusst also das Verhalten der Applikation.


    Meiner Meinung beeinflusst die restliche Teil der Applikation (Threads, Code der on the fly kompiliert wurde) die Com-Komponente. Ich habe aber keinen blassen Schimmer wo und wie. Deshalb hier meine mehr oder weniger konkreten Fragen:


    - Hat irgend jemand eine Idee was helfen könnte oder wo die Gründe für dieses merkwürdige Verhalten liegen könnte.
    - Wie kann man die Versionen der Com-Handler/Instanzen von Windows XP vergleichen. Evtl. haben unsere Rechner unterschiedliche Com-Installtionen, das würde das unterschiedliche Verhalten erklären.
    - gemäss Support des Sms Versand Tools könnte ich mal versuchen das Com-Threading Model einzubauen, habe haber keine Ahnung wie das mit Borland C++ geht. Geht das überhaupt und könnte dies helfen? Der Support wusste dies ebenfalls nicht.
    - Was könnte alles eine Com-Kompenente von einer Applikation aus beeinflussen? Und wie könnte man so etwas tun.


    Als Com-Novize stehe ich momentan vor einer Wand. Ich habe schon viel zu viel Zeit investiert und bin froh um jegliche Hilfe.

    Gruss
Working...
X