2015-11-23 19 views
7

Beh, ho notato un bug strano. Questo si verifica durante il ridimensionamento.Awesomium.NET Crashing on Resize - Memory Leak

Ho notato per la prima volta mentre stavo cercando di correggere i miei allineamenti xaml. Quando provo a ridimensionare la finestra attraverso i miei 2 schermi, il contenuto di awesomium inizia a tremolare e improvvisamente il contenuto scompare e la schermata rossa con il logo si avvicina, poco dopo l'arresto di vshost32.exe .

Ho pensato bene .. ok, potrebbe avere alcuni limiti di larghezza, quindi ho limitato la larghezza massima della finestra sulla larghezza della schermata principale. Ho notato alcuni bagliori aswell mentre stavo cercando di ridimensionare orizzontalmente, ma che era tutto, però quando ho spammato il ridimensionamento e cambiato molte volte altezza e la larghezza lo stesso problema si è verificato su maxheight 1080 e larghezza massima 1920.

enter image description here enter image description here

Edit2 Ulteriori informazioni: ho 2 WebControls sullo stesso XAML. Quando ho aggiunto più e ridimensionato ... si è schiantato il primo secondo.

Edit (1)

[1123/013232:INFO:(0)] WebCore is now online. 
[1123/013232:INFO:(0)] Running Awesomium 1.7.5.1 
[1123/013247:WARNING:Awesomium.NET(0)] System.OutOfMemoryException: Insufficient memory to continue the execution of the program. 
    at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette) 
    at Awesomium.Windows.Controls.WebViewPresenter.Awesomium.Core.ISurface.Initialize(IWebView view, Int32 width, Int32 height) 
    at Awesomium.Core.Surface.oQVs2ZKQlyYpFHm4aaM(Object , Object , Int32 width, Int32 height) 
    at Awesomium.Core.Surface.InitializeDirector(IWebView view, Int32 width, Int32 height) 
    at Awesomium.Core.Surface..ctor(IWebView view, Int32 width, Int32 height, ISurface surfaceImpl) 
    at Awesomium.Core.SurfaceFactory.Nu5RdsobJP(IntPtr , Int32 , Int32 ) 
    at Awesomium.Core.NativeMethods.WebCore_Update(HandleRef jarg1) 
    at Awesomium.Core.WebCore.UpdateThunk() 
[1123/013247:ERROR:ipc_channel_win.cc(261)] pipe error: 109 

Mi sembra che ci sia una certa perdita meory qui.

Dopo 2 GB di RAM sprecato, si blocca.

Provato con 8,5 GB di RAM utilizzato, andato fino a 10,5 e poi si è schiantato.

Ho effettuato alcuni test per scoprire cosa causa questo errore. Ho creato un ciclo che sarebbe ridimensionare la finestra 2 larghezze e altezze ogni 50 ms

public async void testc() { 
     for (int i = 0; i <= 1000; i++) 
     { 
      this.Width = 1700 + i % 2; 
      this.Height = 950 + i % 2; 

      await Task.Delay(50); 
     } 
    } 

è caduto di nuovo come previsto, interessante è però che quando allegate il cappio

WebControl.Reload(true); 

in realtà non si è arrestato in modo anomalo ... La memoria andava su e giù da 350 MB

Esiste comunque un modo per impedire il rendering durante il ridimensionamento?

+0

Sembra un bug in Awesomium. Vorrei creare un esempio molto minimale che ripro il problema e inviarlo al loro bug tracker. –

+0

Sembra che Awesomium sia stato abbandonato per circa un anno. – Devian

+0

La community su http://answers.awesomium.com/ sembra vibrare. Proverei a postare lì. Sembra una versione precedente del motore Stack Overflow. –

risposta

0

Pensa di poter ridimensionare solo dopo che il controllo è stato completamente inizializzato e visualizzato. Bitmap IMHO

at System.Windows.Media.Imaging.WriteableBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat, BitmapPalette palette) 

è di dimensione zero o non valido.

ho usato Awesomium in passato, il mio suggerimento è quello di migrare verso CefSharp

https://cefsharp.github.io/

+0

Per essere onesto, ho effettuato la migrazione a CefSharp 2 giorni fa, dopo i numerosi problemi che ho dovuto affrontare con Awesomium. E sono abbastanza felice ora. Pensavo che cefsharp sarebbe stato più pesante, ma sembra caricarsi bene, ed è molto più ottimizzato di questo progetto abbandonato. Grazie comunque per il tuo tempo. – Devian