Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Download fails and crashes ckan with FATAL UNHANDLED EXCEPTION (Mono.Unix.UnixIOException: Resource temporarily unavailable [EWOULDBLOCK]) #3555

Closed
mwerle opened this issue Apr 6, 2022 · 6 comments · Fixed by #3557
Labels
Linux Issues specific for Linux Mono Issues specific for Mono Support Issues that are support requests

Comments

@mwerle
Copy link
Contributor

mwerle commented Apr 6, 2022

Crash occurs while trying to update "Restock" mod. Other mods were able to be updated.

ckan v1.30.4; Debian GNU/Linux 11

Have now tried several times, including moving the download cache from my home directory (local disk) to a network share. Every time close to the end of the download I get this exception.

See attached exception log (please note that the first exception in this log is immaterial; crash also happens when not attempting to update DistantObject mod).

ckan_crash.txt

[ERROR] FATAL UNHANDLED EXCEPTION: Mono.Unix.UnixIOException: Resource temporarily unavailable [EWOULDBLOCK].
  at Mono.Unix.UnixMarshal.ThrowExceptionForLastError () [0x00005] in <b239aefa15154eb595f94b279272ec9d>:0 
  at Mono.Unix.UnixStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 count) [0x00055] in <b239aefa15154eb595f94b279272ec9d>:0 
  at System.Windows.Forms.XplatUIX11.WakeupMain () [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUIX11.SendAsyncMethod (System.Windows.Forms.AsyncMethodData method) [0x00080] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUI.SendAsyncMethod (System.Windows.Forms.AsyncMethodData data) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.BeginInvokeInternal (System.Delegate method, System.Object[] args, System.Windows.Forms.Control control) [0x0003f] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.Invoke (System.Delegate method, System.Object[] args) [0x00017] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control.Invoke(System.Delegate,object[])
  at System.Windows.Forms.Control.Invoke (System.Delegate method) [0x0001d] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control.Invoke(System.Delegate)
  at CKAN.Util.Invoke[T] (T obj, System.Action action) [0x0000d] in <933dc9d8b62a44ff9a8f866e3767654d>:0 
  at CKAN.Wait.SetDescription (System.String message) [0x00014] in <933dc9d8b62a44ff9a8f866e3767654d>:0 
  at (wrapper remoting-invoke-with-check) CKAN.Wait.SetDescription(string)
  at CKAN.GUIUser.RaiseProgress (System.String message, System.Int32 percent) [0x00017] in <933dc9d8b62a44ff9a8f866e3767654d>:0 
  at CKAN.NetAsyncDownloader.FileProgressReport (System.Int32 index, System.Int32 percent, System.Int64 bytesDownloaded, System.Int64 bytesToDownload) [0x0019e] in <933dc9d8b62a44ff9a8f866e3767654d>:0 
  at CKAN.NetAsyncDownloader+<>c__DisplayClass16_0.<DownloadModule>b__0 (System.Object sender, System.Net.DownloadProgressChangedEventArgs args) [0x0001e] in <933dc9d8b62a44ff9a8f866e3767654d>:0 
  at CKAN.NetAsyncDownloader+NetAsyncDownloaderDownloadPart.<ResetAgent>b__20_0 (System.Object sender, System.Net.DownloadProgressChangedEventArgs args) [0x00008] in <933dc9d8b62a44ff9a8f866e3767654d>:0 
  at System.Net.WebClient.OnDownloadProgressChanged (System.Net.DownloadProgressChangedEventArgs e) [0x0000a] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Net.WebClient.<StartAsyncOperation>b__78_9 (System.Object arg) [0x00000] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (System.Object state) [0x00007] in <533173d24dae460899d2b10975534bb0>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in <533173d24dae460899d2b10975534bb0>:0 
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <533173d24dae460899d2b10975534bb0>:0 
  at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00021] in <533173d24dae460899d2b10975534bb0>:0 
  at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <533173d24dae460899d2b10975534bb0>:0 
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in <533173d24dae460899d2b10975534bb0>:0 
@HebaruSan HebaruSan added Support Issues that are support requests Linux Issues specific for Linux Mono Issues specific for Mono labels Apr 6, 2022
@HebaruSan

This comment was marked as outdated.

@DasSkelett
Copy link
Member

Sounds like another case of #3343, did Debian update its Mono package?

@HebaruSan
Copy link
Member

They still haven't merged or even commented on mono/mono#21136 ??

@DasSkelett
Copy link
Member

Yeah Mono is pretty dead now, even more dead than it has been a few years ago already. I think Microsoft moved all the personnel away and to .NET (5, 6, ...).

@HebaruSan
Copy link
Member

@mwerle, there's a test build here that may/should fix the problem you're having:

https://github.com/KSP-CKAN/CKAN/suites/5956890834/artifacts/204524375

@mwerle
Copy link
Contributor Author

mwerle commented Apr 6, 2022

Thanks for the super-fast and detailed investigation. Apologies for the lack of responses last night - I was out having a few beers ;) - as well as my lack of more detailed searching for related issues (I only searched for EWOULDBLOCK).

I had worked around the issue by downloading the mod manually and importing it into CKAN.

Further information (just for interest):

  • mono 6.12.0.122 (installed using mono-project's repository; Debian 11's default is 6.8)
    • can't remember why I use an out-of-distro version of mono; initially probably due to KSP development and never changed when I upgraded to Debian 11.
  • crash also happened when only downloading ReStock by itself (other bug mentions it only happens when downloading multiple mods) - although ReStock is over 200MiB in size which might explain the pipe filling up over time
  • confirmed crash DOES NOT happen if using console instead of UI
    • cannot repro crash this morning with UI either (download is MUCH faster than yesterday - so maybe overall time taken to download was a factor)
    • could repro crash by attempting to download multiple large mods

Using the updated test build of ckan (1.30.5) I was unable to reproduce the crash even when attempting to download multiple mods or much bigger mods (Parallax - 1.8GiB). So it seems your changes are a valid workaround. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Linux Issues specific for Linux Mono Issues specific for Mono Support Issues that are support requests
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants