Doppelter Prozess - Programm startet zwei mal?

  • Hallo,

    Ich benutze Autoit Ver 3.3.12.0 und SciTE Ver 3.4.4. Nun habe ich folgendes Problem:

    Ich starte Ein Autoit-Skript aus SciTE heraus (mit Taste F5) und es wird scheinbar ordnungsgemäß ausgeführt.

    Wenn ich das Skript im x86-Mode compiliere, wird es auch scheinbar ordnungsgemäß ausgeführt.

    Wenn ich das Skript im x64-Mode compiliere, wird das Programm gestartet und es poppt nach einer kurzen Weile weg um dann gleich nochmal zu starten.

    Der Process Explorer zeigt für die drei verschieden Fälle jeweils zwei Prozesse an. Bei den compilierten Programmen verschwindet der untergeordnete Prozess nach einer Weile. Selbst die in diesem Prozess extra angelegte Logdatei wird nicht angelegt oder gespeichert, obwohl es auf dem Bildschirm ausgegeben wird. Erst der Verbleibende Prozess legt die Log korrekt an.

    Auch mit dem Beispiel <GUICtrlCreateAvi> aus der Hilfe kann man diesen Effekt provozieren.


    Kann man diesen Fehler abschalten? Ich möchte die x64-Version benutzen, wegen der besten Performance benutzen.

    Autoit-Skript aus SciTE
    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/f5runskriptqxw72vfaum.jpg]
    die Beiden Autoit3Wrapper.exe bleiben die ganze Zeit erhalten.

    Skript compiliere im x86-Mode
    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/x86mode2xtestjmryf2a5bu.jpg]
    Der Prozess 2688 und der Prozess 5596

    nach ca. 15 sec.
    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/x86mode1xtestvmx0dqo2fw.jpg]
    Prozess 5596 ist weg, dafür dauert es ewig bis das Programm gestartet ist.


    Skript compiliere im x64-Mode
    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/x64mode2xtestnpsk9ja8um.jpg]
    Der Prozess 5152 und der Prozess 5292

    nach ca. 15 sec.
    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/x64mode1xtest2b41crqghx.jpg]
    Prozess 5292 ist weg, das Programm schließt sich und startet scheinbar neu.

    ?(

    Einmal editiert, zuletzt von Magma (21. September 2014 um 22:35)

  • Hab das zwar nie beobachtet, aber ich würde mal vermuten, dass du UPX verwendest und deswegen ein temporärer Prozess entsteht (eigentlicher Programmcode der exe wird entpackt und danach ausgeführt).
    Mehr zu UPX kannst du auch im wiki Artikel lesen: http://de.wikipedia.org/wiki/UPX

    Solltest du UPX nutzen kann der Start unter anderem auch länger als normal dauern, weil Virenscanner solches Verhalten als verdächtig ansehen und dann sehr genau prüfen was da eigentlich zur Laufzeit entpackt und ausgeführt werden soll. Einfachste Lösung für deine "Probleme" ist also vermutlich der Verzicht auf UPX.

  • Zitat von Magma

    Ich möchte die x64-Version benutzen, wegen der besten Performance benutzen.

    Wie kommst du darauf, dass Scripe als x64 compiliert schneller sind?
    Bezieht sich das auf die AutoIt-internen, gewrapperten API-Funktionen? DAS würde ich dann gerne mal sehen!

  • Vielen Dank für eure Einschätzungen.

    misterspeed, ich habe im Compile-Dialog kein UPX angehakt. Daran kann es eigentlich nicht liegen.

    [Blockierte Grafik: http://www.fotos-hochladen.net/uploads/compile64bc2sh1i78t.jpg]

    Das Beenden des Programmfensters passiert bei der 32 Bit-Version genau so wie bei der 64 Bit-Version. Starte doch mal die Demo und warte einfach mal 30 Sekunden.

    Spoiler anzeigen


    Andy, zum einen werden die Fenster schneller aufgebaut, aber was noch deutlicher zu sehen ist, ist das Blinken des Cursors im Eingabefeld in meinem Programm. Es ist deutlich langsamer in der 32-Bit-Variante. Das führe ich auf erhöhte I/O zurück.

    Bei der 32- Bit-Version sieht man 31,5 MB I/Os Read
    [Blockierte Grafik: http://www.fotos-hochladen.net/uploads/32bitios3xonerv8y0.jpg]

    Bei der 64 Bit-Version sieht man gerade mal 32,0 KB I/Os Read
    [Blockierte Grafik: http://www.fotos-hochladen.net/uploads/64bitiossymz3v6hax.jpg]


    Mich wundert es, dass ich es bei mir auf zwei verschiedenen PC nach vollziehen kann, aber kein anderer es bisher bemerkt hat, dass sich ein Geisterprozess öffnet? :?:

  • Kann das bei mir nicht nachvollziehen. Der processexplorer zeitgt mir beim Beispielscript immer nur einen Prozess an, egal ob nun mit UPX oder ohne. Meine Vermutung ist also, dass es entweder mit der neuen Autoit Version zusammenhängt (ich verwende hier noch 3.3.6.1 bzw auf einem anderen System 3.3.8.1) oder aber mit deiner Antivirenlösung. Letzteres könntest du ja mal durch kurzzeitiges Deaktivieren testen.

  • Hi,

    Zitat

    Andy, zum einen werden die Fenster schneller aufgebaut, aber was noch deutlicher zu sehen ist, ist das Blinken des Cursors im Eingabefeld in meinem Programm. Es ist deutlich langsamer in der 32-Bit-Variante. Das führe ich auf erhöhte I/O zurück.

    Ich kann weder bestätigen, dass die Fenster schneller aufgebaut werden, noch dass die I/O-Rate anders ist!
    Ganz im Gegenteil, I/O ist in beiden Fällen gleich ( nach starten 2.5MB ), während des Progammlaufs ist I/O natürlich Null, da weder etwas geschrieben noch gelesen wird!

  • Vielen Dank misterspeed, du hast den richtigen Riecher gehabt. :thumbup:


    http://www.fotos-hochladen.net

    Nach dem ich im AVAST! Antivierenprogramm DEEPSCREEN abgehakt habe, laufen die Programme mit nur einen Prozess.


    Andy, ich sehe es auch so, dass es bei einem normalen Programm keine signifikanten Unterschiede geben wird, aber in dem von mir gemachten und getesteten Programm laufen Audios, die diese Unterschiede wahrscheinlich verursachen. Aber das ist ja jetzt kein Problem mehr. :)