Director crashes

Tonigs, Nils ntonigs at ukaachen.de
Fri Jun 26 02:10:41 CDT 2009


Hello Ruslan,

I change to the last version of V4MD 4.2 rc1 and of the Valentina Office Server (DEMO).

The behaviour is the same.

And here the lingo-script that causes the crash:
"...
    -- sql-statement ausfuehren lassen
    l_o_dbCursor = query( p_str_SQL, l_bol_DEBUG )

    if CheckValError() then die( "Klasse c_v4_DBI: on select : FEHLER: kein result von QUERY !" )
        
    case TRUE of
        
      ( (NOT l_o_dbCursor ) OR ( l_o_dbCursor = VOID ) ):
        -- AUSNAHMEBEHANDLUNG
        l_aoh_objectData = FALSE
        
        
      ( objectP( l_o_dbCursor ) ):
        l_int_fieldCount = l_o_dbCursor.fieldCount
        repeat with w = 1 to l_int_fieldCount
          
          l_sym_feldName = symbol( l_o_dbCursor.field[ w ].name )
          l_int_anzahlResults = l_o_dbCursor.recordCount
          if ( l_int_anzahlResults = 0 ) then
            
            -- *** empty VCURSOR ***
            -- defaultwerte aus liste behalten
            -- vom medien-darsteller ein duplikat herstellen
            if ( l_sym_feldName = #binary_media ) then
              -- einen bilddarsteller für mediaItem erzeugen und speichern
              l_o_medienDarsteller = _movie.newMember( symbol( #bitmap ) )
              l_o_medienDarsteller.image = l_aoh_objectData[ ii ][ #binary_media ].image.duplicate()
              -- in defaultliste speichern
              l_aoh_objectData[ ii ][ #binary_media ] = l_o_medienDarsteller
            end if
            
          else if ( l_int_anzahlResults > 0 ) then
            
            -- *** VCURSOR MIT DATEN ***
            -- wenn es binärdaten sind (BLOB-feld) ....
            if ( l_sym_feldName = #binary_media ) then
              -- den default-darsteller löschen
              l_aoh_objectData[ ii ][ #binary_media ] = VOID
              -- einen bilddarsteller für mediaItem erzeugen und speichern
              l_aoh_objectData[ ii ][ #binary_media ] = _movie.newMember( symbol( #bitmap ) )
              -- bilddatei aus db-feld in temporaeren darsteller importieren

>>>>>CRASH>>>>>    l_o_dbCursor.field( w ).getMedia( l_aoh_objectData[ ii ][ #binary_media ] )  <<<<<<<<<<<<

            else
              -- dann den wert aus dem VCursor in die meiner liste speichern
              dfghjk = l_o_dbCursor.field[ w ].value
              if NOT( dfghjk = VOID ) then
                -- wert aus dbfeld übernehmen
                l_aoh_objectData[ ii ][ l_sym_feldName ] = l_o_dbCursor.field[ w ].value
              end if
            end if
            
          end if
          
        end repeat
        
    end case
    
    l_o_dbCursor = VOID
..."

And here my additionale description:

This script-segment will fill the fieldcontent of the VCusor-object 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.


And now the last lines of the logfile to the moment director crashes:

"...
* V4MD * : VCursor.field()...
	PARAM: pThisCursor = 133612432
	PARAM: index = 8
return res = 133572064

* V4MD * : VField.getMedia()...
	PARAM: pThisField = 133572064
* V4MD * : VDatabase.close()...
	PARAM: pThisDatabase = 133610972
return

* V4MD * : VConnection.close()...
	PARAM: pThisConnection = 133562920
return

* V4MD * : Valentina.shutDownClient()...
Return
"

If you don't have a workaround I follow your hint and report this to Valentina Mantis.

Best 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