https://bugzilla.novell.com/show_bug.cgi?id=685837
https://bugzilla.novell.com/show_bug.cgi?id=685837#c0 Summary: SIGSEGV in custom TableViewCell while downloading picture(might be a bug in WebClient) Classification: Mono Product: MonoTouch Version: unspecified Platform: Other OS/Version: Other Status: NEW Severity: Critical Priority: P5 - None Component: Runtime AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: Customer Blocker: --- Description of Problem: I'm using currently MonoTouch 3.2.6 student edition, and made a custom TableViewCell, which contains a picture from the internet, so I need to download the picture from the internet. In order not to block the main ui thread, I used ThreadPool to download the Picture. The TableView load at startup without any problem, but if I try to scroll down or up the TableView, it'll then randomly crash with a SIGSEGV. It may not happen immediatly after I scroll but it'll always crash if I keep scrolling before all the picture are loaded. Here is the GetCell Method of my UITableViewSource: public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { UITableViewCell cell = null;// = tableView.DequeueReusableCell(idenfier); Post post = posts[indexPath.Row]; InvokeOnMainThread(() => //just experimental, make no difference when I remove it, just wanna be sure the bug isn't here { PostTableCell customCell; lock (cells) { cells.TryGetValue(post.id, out customCell); if (customCell == null) { customCell = new PostTableCell(); cell = customCell.Cell; cell.Tag = post.id; cells.Add(cell.Tag, customCell); } else { customCell = cells[post.id]; cell = customCell.Cell; } } lock (customCell) { customCell.Tags = post.tags; customCell.ImageUrl = post.preview_url; customCell.Resolution = "1024*768"; } }); return cell; } And here is the ImageUrl setter of my custom cell: public string ImageUrl { set { try { if (!set) { set = true; ThreadPool.QueueUserWorkItem((state) => { try { string _UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"; NSData data = null; lock (MoeManager.Instance.WebClient)//It's only a customWebClient with timeout, no difference if I use standard WebClient { try { MoeManager.Instance.WebClient.Headers[HttpRequestHeader.UserAgent] = _UserAgent; while (MoeManager.Instance.WebClient.IsBusy) Thread.Sleep(100); byte[] buffer = MoeManager.Instance.WebClient.DownloadData((string)state); data = NSData.FromArray(buffer); } catch (Exception ex) { } } UIImage img = UIImage.LoadFromData(data); BeginInvokeOnMainThread(() => { try { lock (this) { image.Image = img; image.ContentMode = UIViewContentMode.ScaleAspectFit; if (indicator.IsAnimating) indicator.StopAnimating(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }); } catch (Exception ex) { Console.WriteLine(ex); } }, value); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } And after hours of debuging, I finally find out, there could be something wrong with WebClient! Because if I change byte[] buffer = MoeManager.Instance.WebClient.DownloadData((string)state); into: byte[] buffer = new byte[0]; It'll then print the exception that buffer should not be null, as expected. But program won't crash anymore.(And I'm sure there's nothing wrong with internet connection and the content it's downloading) Steps to reproduce the problem: 1. Scroll down or up the TableView with CustomTableViewCell. Actual Results: It crashes with SIGSEGV Expected Results: It should load all pictures asynchron How often does this happen? Almost everytime I scroll up or down Additional Information: Call stack while crashing public class Application { static void Main (string[] args) { UIApplication.Main (args); <========== NullPointerReference Exception } } Stacktrace: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <0x00004> at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <0x00004> at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00038] in /Users/plasma/Source/iphone-3/monotouch/UIKit/UIApplication.cs:26 at MonoTouch.UIKit.UIApplication.Main (string[]) [0x00000] in /Users/plasma/Source/iphone-3/monotouch/UIKit/UIApplication.cs:31 at Subscriber.Application.Main (string[]) [0x00000] in /Users/liiir1985/Projects/Imouto/Subscriber/Main.cs:15 at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x0001d, 0x00090> Native stacktrace: 0 Subscriber 0x000be9db mono_handle_native_sigsegv + 343 1 Subscriber 0x0000e7a6 mono_sigsegv_signal_handler + 313 2 libSystem.B.dylib 0x920cd45b _sigtramp + 43 3 ??? 0xffffffff 0x0 + 4294967295 4 libobjc.A.dylib 0x029d128b class_respondsToSelector + 59 5 CoreFoundation 0x00e0a8a9 ___forwarding___ + 777 6 CoreFoundation 0x00e0a522 _CF_forwarding_prep_0 + 50 7 UIKit 0x01d21b98 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 634 8 UIKit 0x01d174cc -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75 9 UIKit 0x01d2c8cc -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1561 10 UIKit 0x01d2490c -[UITableView layoutSubviews] + 242 11 QuartzCore 0x03189a5a -[CALayer layoutSublayers] + 181 12 QuartzCore 0x0318bddc CALayerLayoutIfNeeded + 220 13 QuartzCore 0x031310b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310 14 QuartzCore 0x03132294 _ZN2CA11Transaction6commitEv + 292 15 QuartzCore 0x0313246d _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99 16 CoreFoundation 0x00e7a89b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27 17 CoreFoundation 0x00e0f6e7 __CFRunLoopDoObservers + 295 18 CoreFoundation 0x00dd81d7 __CFRunLoopRun + 1575 19 CoreFoundation 0x00dd7840 CFRunLoopRunSpecific + 208 20 CoreFoundation 0x00dd7761 CFRunLoopRunInMode + 97 21 GraphicsServices 0x040261c4 GSEventRunModal + 217 22 GraphicsServices 0x04026289 GSEventRun + 115 23 UIKit 0x01cbac93 UIApplicationMain + 1160 24 ??? 0x077ee9b2 0x0 + 125757874 25 ??? 0x077ee782 0x0 + 125757314 26 ??? 0x077eddea 0x0 + 125754858 27 ??? 0x077edc3c 0x0 + 125754428 28 ??? 0x077edcf1 0x0 + 125754609 29 Subscriber 0x0000e56a mono_jit_runtime_invoke + 1360 30 Subscriber 0x001c961b mono_runtime_invoke + 137 31 Subscriber 0x001cb2d7 mono_runtime_exec_main + 714 32 Subscriber 0x001cabfd mono_runtime_run_main + 812 33 Subscriber 0x00095354 mono_jit_exec + 200 34 Subscriber 0x0027d299 main + 3494 35 Subscriber 0x00003009 _start + 208 36 Subscriber 0x00002f38 start + 40 Debug info from gdb: ================================================================= Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application. ================================================================= warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(monotouch-x86.double-abi-stret-trampoline.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(monotouch-x86.double-abi-stret-trampoline.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(gc.x86.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(gc.x86.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(zlib-helper.x86.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(zlib-helper.x86.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: Could not find object file "/var/folders/Ny/NyElTwhDGD8kZMqIEeLGXE+++TI/-Tmp-//ccvRqNHg.o" - no debug information available for "template.m". warning: .o file "/Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_divdi3.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_divdi3.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_moddi3.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_moddi3.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_udivdi3.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_udivdi3.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_umoddi3.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Could not open OSO file /Developer/usr/lib/gcc/i686-apple-darwin10/4.2.1/libgcc.a(_umoddi3.o) to scan for pubtypes for objfile /Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber warning: .o file "/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.o)" more recent than executable timestamp in "/Users/liiir1985/Library/Application Support/iPhone Simulator/4.3/Applications/F41EFB7C-595F-410B-AE98-D469748E1152/Subscriber.app/Subscriber" warning: Couldn't open object file '/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib/libmonotouch.a(monotouch-glue.x86.o)' -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
