Quantcast
Channel: Adobe Community : All Content - AIR Development
Viewing all articles
Browse latest Browse all 2954

Adobe Air.dll Faulting Module

$
0
0

I have a simple application, it simply loops through a list of swf files and for each file calls a little application that I wrote that displays them. The originating application does not provide a way to display them, so I wrote the other in Air. I created 6 of these Air applications(AirFlash1.exe, AirFlash2.exe, etc) to go round robin on playing the flash as I noticed that calling the same executable for two simultaneously displaying flash files created some stuttering in the flash animations. So, for each swf, one of the Air executables is called, it displays the swf for a certain duration and then closes itself.

Anyway, everything works well for the first thousand or so calls to the Air executables -- the calling application can run for days. After a while, the Air executables start to not close themselves. I end up with something like this in the EventViewer.

Faulting application name:AirFlash2.exe, version:0.0.0.0, time stamp:0x567b6b28

Faultingmodule name:Adobe AIR.dll, version:20.0.0.233, time stamp:0x567b6c3e

Exception code:0xc0000005

Fault offset:0x001162e3

Faulting process id:0x1394

Faulting application start time:0x01d19330688956d4

Faulting application path: C:\Air\AirFlash2\AirFlash2.exe

Faultingmodule path: c:\Program Files\Common Files\Adobe AIR\Versions\1.0\Adobe AIR.dll

ReportId: bd6aae8a-ff23-11e5-aedd-e840f2e2d422

The Air executables are very simple. It receives a swf file name(and dimensions, scaling, and duration) on the command line. Then it basically runs like this(I removed the setting of dimensions, argument processing, and scaling code):

var displayingFile =0;//in case it is called more than once, for some reason Air applications don't create a new instance of the same executable

air.NativeApplication.nativeApplication.addEventListener(air.InvokeEvent.INVOKE, onInvokeEvent);

function onInvokeEvent(invocation){

     var variables =new air.URLVariables(" ");

     if(newFlashVars !=""){

          variables =new air.URLVariables(newFlashVars);

     }

     var urlreq =new air.URLRequest(newFlashFile);

     urlreq.data = variables;

     var newWindow =new air.NativeWindow(options);

     var loader =new air.Loader();

     loader.contentLoaderInfo.addEventListener(air.Event.COMPLETE,function(e){

          var _content = e.target.loader.content;

          newWindow.stage.addChild(e.target.loader);

          newWindow.activate();

          setTimeout(function(){

               newWindow.close();

               displayingFile--;

               if(playingContent<=0){

                    air.NativeApplication.nativeApplication.exit();

               }

          },newDuration);

     });

     loader.load(urlreq);

}

I originally was using the HTMLLoader object (air.HTMLLoader.createRootWindow) with very similar code as above. I would just simply embed the swf file into the HTML and play it that way. The only problem was that I would end up with EventViewer entries like the one above except it would be for the webkit.dll located in the Air installation directory.

My experience level with Adobe Air and the development ecosystem around it is very low. As such, I may be missing something simple, or not. My questions are: Where does the fault lie? I think my code is pretty simple and matches what I have found in examples else where. If it were C++ I would be looking for an invalid pointer. I don't think there is any memory cleanup needed for Air, is there? Why is the Adobe Air.dll trying to grab memory that it does not have access to(0xC0000005)? Is there a way to keep this from happening or to recover from it? or at least keeping it from displaying the error dialog on the screen?


Viewing all articles
Browse latest Browse all 2954

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>