Multidmedia Limited (MDM)
Search
advanced search »    
Quick Links
advanced search »
   Tuesday September 7th 2010

 




Untitled Document
+
Products & Solutions
 
Products
- Zinc 3.0 Builder
- Zinc 3.0 Plug-In Windows
- Zinc 3.0 Plug-In Mac OSX
- Zinc 3.0 Plug-In Linux
- Zinc 3.0 Development Suite
- Inferno 1.0 Windows
- Inferno 1.0 Mac OSX
Solutions
- Developers
- Designers
- Education
   
+
Support & Resources
 
Support
- Support Home
- Technotes & Known Issues
- FAQs
- Contact Us
Resources
- Software Updates
- Software Release Notes
- Software Bug Management
- Developer Articles
- File Exchange
- LiveDocs
- Support Forums
   
+
Purchase Online
 
- Online Shop
- Find a Reseller
- Volume Licensing
   
+
Company
 
- About Multidmedia (MDM)
- Client Showcase
- Legal Information
- Job Opportunities
- Press Room
- Blog
   
 

breadcrumbs

Home > Support > Bugs

 

Software Bug Management & Tracking

The MDM Software Bug Management and Tracking System is used to track and monitor the progress of user reported software bugs. You can search for a reported issue below to track it's progress and/or to get more information on an outstanding technical issue.


Bug Report #ZNC-7179GF
Verified on 20 January 2010
in some scenarios mdm.Database.SQLite.close(..) could result in crash  
Reported By Staff Member
This issue is Pending and is marked as a Medium priority.
 
Zinc 3.0 > Mac OSX > Wrapper/Projector > 3.0.18 > Crash/Hang  
Description
When calling mdm.Database.SQLite.close(path) database connection should be closed releasing local database.

On some occasion calling close(...) method could result in application unepxected crash with report similar to (SnowLeopard 10.6.2):

Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libSystem.B.dylib 0x95024732 __kill + 10
1 libSystem.B.dylib 0x95024724 kill$UNIX2003 + 32
2 libSystem.B.dylib 0x950b798d raise + 26
3 libSystem.B.dylib 0x950cda44 abort + 93
4 ...yourcompany.yourcocoabundle 0x0255fea5 __eprintf + 83
5 ...yourcompany.yourcocoabundle 0x0255aeb5 CDatabaseSQLite_close::OnExecute(CCommandsHandlerForm&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&) + 73
6 ...ourcompany.mdm_flash_player 0x0001bdf0 CCommandsHandler::OnExecuteCommand(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) + 1970
7 ...ourcompany.mdm_flash_player 0x0001c94f CCommandsHandler::OnExecuteCommandEI(std::basic_string, std::allocator > const&) + 515
....


To repeat compile provided example. It uses two different versions to open and then close connection to database.
The first uses:

mdm.Database.SQLite.close(path);

(immediate close of connection) while the second option uses delayed execution:

callLater(mdm.Database.SQLite.close, [path]);


The expected results of running application test is a text like:

mdm.Database.SQLite.open(/Volumes/VISTASHARE/tickets/26618/flex/bin-debug/my_db.sqlite)
mdm.Database.SQLite.close(/Volumes/VISTASHARE/tickets/26618/flex/bin-debug/my_db.sqlite)


the code used in example:


creationComplete="mdm.Application.init(this);">

import mdm.Application;
private function doTest():void
{
setup();
tearDown();
};
//
private const DB_NAME:String = "my_db.sqlite";
private var path:String = null;
private var created:Boolean = false;
private function setup():void
{
path = mdm.Application.path+DB_NAME;
var exists:Boolean = mdm.FileSystem.fileExists(path);
if(exists){
mdm.FileSystem.deleteFile(path);
exists = mdm.FileSystem.fileExists(path);
if(exists)
{
debug("FAIL cannot remove file at: "+path);
return;
};
};
debug("mdm.Database.SQLite.open("+path+")");
mdm.Database.SQLite.open(path);
var isError:Boolean = mdm.Database.SQLite.error();
if(isError)
{
debug("FAIL "+mdm.Database.SQLite.errorDetails());
return;
};
created = true;
}
private const LAZY_EXECUTION:String = "lazy";
private function tearDown():void
{
if(!created) return;
debug("mdm.Database.SQLite.close("+path+")");
if(executionOptions.selectedValue == LAZY_EXECUTION)
{
callLater(mdm.Database.SQLite.close, [path]);
} else
{
mdm.Database.SQLite.close(path);
}

created = false;
}

private function debug(msg:*):void
{
tf.text += msg.toString()+"\n";
tf.verticalScrollPosition = tf.maxVerticalScrollPosition;
};
]]>














To work around issue:
Invoke mdm.Database.SQLilte.close(path) in lazy manner e.g. using setTimeout(....) global flash runtime method

Attached File(s)
Click Here to download the Attached File
Resolution
Pending

View all Pending Bug Reports » Report a new Software Bug/Issue »

 

 
Multidmedia Limited (MDM)

AddThis Social Bookmark Button
Copyright © 2002-2010 Multidmedia Limited (MDM) All rights reserved. Use of this website signifies your agreement to the Terms of Use.
Flash, Flex and associated Logos are the Registered Trademarks of Adobe Systems, Inc.
There are currently 49 Users Online.