crash at shockwave

Tonigs, Nils ntonigs at ukaachen.de
Fri Sep 4 04:31:36 CDT 2009


Hi Ruslan,
Hi Kirill,

i use v4md 4.2 for windows with director 10.1 and valentina office server 4.2.

now, it seems that I have the same problem I had posted on 16.06.09, but this time at shockwave:

the statement getMedia() crash the browser with the alert:

"Die Anweisung in '0x6805a74d' verweist auf Speicher in '0x839ae850'. Der Vorgang 'written' konnte nicht auf dem Speicher durchgeführt werden."
(The instruction in ' 0x6805a74d' refers to memory in ' 0x839ae850'. The procedure 'written' could not be accomplished on the memory)

If field of other types than BLOB are used, no error appears.

And here the lingo-script that causes the crash:
"...
      case TRUE of
          
        ( (NOT _global.g_o_dbCursor ) OR ( _global.g_o_dbCursor = VOID ) ):
          -- AUSNAHMEBEHANDLUNG
          -- NUR PHP mysql_free_result( l_result ) -- leert den arbeitsspeichern fuer ein neues abfrage-ergebnis
          l_aoh_objectData = FALSE
          
          
        ( objectP( _global.g_o_dbCursor ) ):
          l_int_anzahlResults = _global.g_o_dbCursor.recordCount
          
          put( l_int_anzahlResults )
          
          l_int_fieldCount = _global.g_o_dbCursor.fieldCount
          repeat with w = 1 to l_int_fieldCount
            
            l_sym_feldName = symbol( _global.g_o_dbCursor.field[ w ].name )
            
            put( "feld: " & l_sym_feldName & " ==> " )
            
            if ( l_int_anzahlResults = 0 ) then
              
              -- *** LEERER VCURSOR ***
              -- defaultwerte aus liste behalten
              -- vom medien-darsteller ein dublikat herstellen
              if ( l_sym_feldName = #binary_media ) then
                -- einen bilddarsteller für mediaItem erzeugen und speichern
                l_o_medienDarsteller = _movie.newMember( symbol( #bitmap ) )
                put( "DEFAULT darsteller für MEDIA ==> " & l_o_medienDarsteller )
                l_o_medienDarsteller.image = l_aoh_objectData[ l_sym_tabellenName ][ #binary_media ][ 1 ].image.duplicate()
                -- in defaultliste speichern
                l_aoh_objectData[ l_sym_tabellenName ][ #binary_media ][ 1 ] = l_o_medienDarsteller
              end if
              -- feld RECID
              if ( l_sym_feldName = #RecID ) then
                l_aoh_objectData[ l_sym_tabellenName ][ l_sym_feldName ][ 1 ] = VOID
              end if
              put( "defaultwert beibehalten" )
              
            else if ( l_int_anzahlResults > 0 ) then
              
              -- *** VCURSOR MIT DATEN ***
              -- wenn es binärdaten sind (BLOB-feld) ....
              if ( l_sym_feldName = #binary_media ) then
                -- einen bilddarsteller für mediaItem erzeugen und speichern
                l_o_medienDarsteller = _movie.newMember( symbol( #bitmap ) )
                put( "NEUR darsteller für MEDIA ==> " & l_o_medienDarsteller )
                -- bilddatei aus db-feld in temporaeren darsteller importieren
>>>>>>>>CRASH>>>>>>>>>>>>>  _global.g_o_dbCursor.field( w ).getMedia( l_o_medienDarsteller )                
                l_aoh_objectData[ l_sym_tabellenName ][ #binary_media ][ 1 ] = l_o_medienDarsteller
              else
                -- dann den wert aus dem VCursor in die meiner liste speichern
                dfghjk = g_o_dbCursor.field[ w ].value
                if NOT( dfghjk = VOID ) then
                  -- wert aus dbfeld übernehmen
                  l_aoh_objectData[ l_sym_tabellenName ][ l_sym_feldName ][ 1 ] = _global.g_o_dbCursor.field[ w ].value
                  put( l_sym_feldName & " ==> " & l_aoh_objectData[ l_sym_tabellenName ][ l_sym_feldName ] )
                end if
              end if
              
            end if
            
          end repeat
          
      end case
..."

And here my additionale description:

This script-segment will fill the fieldcontent of the VCusor-object (global variable) into a proplist called 'l_aoh_objectData' and is located in repeat-loop (not shown) the work with different sql-statements.
In case of a empty VCusor the proplist 'l_aoh_objectData' is prefilled with defaultvalues.
The exeption is the field 'binary_media' (type BLOB). This value will be stored in a castmember. The proplist only hold a reference to this member.

Sorry, but at shockwave I get no logs.
The last output at the messagewindow is "NEUR darsteller für MEDIA ==> (member 73 of castLib 1)" from the line befor the getMedia().


My tests with the example-script "Remote&Local" works well, of course it use no BLOB-fields.


Regards

Nils Tonigs


Audiovisuelles Medienzentrum

Medizinische Fakultät der RWTH Aachen

Pauwelsstr. 30

52074 Aachen

 

Tel.: +49-(0)241-80-89035

Fax: +49-(0)241-80-82561

E-Mail: ntonigs at ukaachen.de



More information about the Valentina mailing list