23.11.2019, 17:17
Zur Zeit gibt es mit OpenSim unter Linux bei Verwendung dynamisch generierter Texturen (Dynamic Textures) massive Probleme die auf Memory Leaks zurückzuführen sind.
Es handelt sich dabei um Texturen die unter Verwendung grafikrelevanter ossl-Funktionen dynamisch erzeugte Texturen auf die Oberfläche eines Prims rendern. Häufig dienen diese Skripe auch zur Darstellung von Text auf den Prims. In der Regel wird eine Liste mit Zeichnungsfunktionen erstellt und dann zum Rendern z.B. an die Funktion osSetDynamicTextureDataBlend übergeben wird. Es ist aber auf diese Weise auch möglich ganze Texturen aus dem Web auf einem Prim abzubilden.
Das Problem wird möglicherweise nicht sofort bemerkt, kann aber, wenn die Scripte wiederholt ausgeführt werden, nach wenigen Stunden schnell zu Speicherverlust in der Höhe mehrerer Giga-Bytes führen. Dies ist insbesondere dann der Fall, wenn wechselnde Texturen und Texte dargestellt werden, wie dies z.B. in einer Besucherliste oder bei der Anzeige einer minutengenauen Sim-Statistik der Fall ist.
Nachdem zuerst vermutet wurde, dass es sich um einen Fehler im Code von OpenSim 0.9.1.n handelt, hat sich nun gezeigt, dass das Problem in der neusten Mono-Version auftritt und der Grund der Memory Leaks eindeutig der Bibliothek libgdiplus mit der Version 6.0.x zugeordnet werden kann, die zur Zeit mit Mono 6 ausgeliefert wird.
Um das Problem unter Ubuntu 18.04 auf meinem Server zu eliminieren habe ich anstelle der Version libgdiplus 6.0.4 die Version 4.2-2 installiert und bin dabei wie folgt vorgegangen:
Danach war auf meinem Server das Problem behoben. Die intensiven Scripte auf meinem Test-Server laufen jetzt seit 2 Tagen ohne Speicherverlust. Die Probleme sind inzwischen auch bei den Entwicklern von libgdiplus angekommen.
LG Pius o/
Es handelt sich dabei um Texturen die unter Verwendung grafikrelevanter ossl-Funktionen dynamisch erzeugte Texturen auf die Oberfläche eines Prims rendern. Häufig dienen diese Skripe auch zur Darstellung von Text auf den Prims. In der Regel wird eine Liste mit Zeichnungsfunktionen erstellt und dann zum Rendern z.B. an die Funktion osSetDynamicTextureDataBlend übergeben wird. Es ist aber auf diese Weise auch möglich ganze Texturen aus dem Web auf einem Prim abzubilden.
Das Problem wird möglicherweise nicht sofort bemerkt, kann aber, wenn die Scripte wiederholt ausgeführt werden, nach wenigen Stunden schnell zu Speicherverlust in der Höhe mehrerer Giga-Bytes führen. Dies ist insbesondere dann der Fall, wenn wechselnde Texturen und Texte dargestellt werden, wie dies z.B. in einer Besucherliste oder bei der Anzeige einer minutengenauen Sim-Statistik der Fall ist.
Nachdem zuerst vermutet wurde, dass es sich um einen Fehler im Code von OpenSim 0.9.1.n handelt, hat sich nun gezeigt, dass das Problem in der neusten Mono-Version auftritt und der Grund der Memory Leaks eindeutig der Bibliothek libgdiplus mit der Version 6.0.x zugeordnet werden kann, die zur Zeit mit Mono 6 ausgeliefert wird.
Um das Problem unter Ubuntu 18.04 auf meinem Server zu eliminieren habe ich anstelle der Version libgdiplus 6.0.4 die Version 4.2-2 installiert und bin dabei wie folgt vorgegangen:
Code:
sudo apt purge libgdiplus
sudo apt autoremove
sudo apt install libgdiplus=4.2-2
sudo apt-mark hold libgdiplus
sudo apt install mono-complete
Danach war auf meinem Server das Problem behoben. Die intensiven Scripte auf meinem Test-Server laufen jetzt seit 2 Tagen ohne Speicherverlust. Die Probleme sind inzwischen auch bei den Entwicklern von libgdiplus angekommen.
LG Pius o/