Forum

Firefox crash with .json

13 October 2016 14:40 #12690
Hi,
I noticed a bug.

When I (and other colleagues) execute an app create with .json export, Firefox crash after 8-10min.
To identify this problem, I have create a new app with Project Manager.
In .html, no problem. In Chrome and Explorer, no problem.
As it's a new project with only cube, the problem doesn't come to my script.

To illustrate this bug :
At launch, the "Plugin Container for Firefox" starts at 200 000 K of memory but it grow up in time !
At the end, it reaches more than 3 000 000 K !! and Firefox crash.



13 October 2016 14:43 #12691
sorry, I don't know how to delete this second post
14 October 2016 09:03 #12705
Hello

I've got the same problem, it's webplayer related.
With custom html et json export no problem.

It's here since 16.04 if i can remember well
14 October 2016 09:38 #12706
Not for me.

My custom export in json are the same problem
14 October 2016 10:14 #12707
I don't know if you understand me well (erf dur de parlais en en)

Without using the blend4web player you've got the same problem?
I mean edit from scratch the html file with :


<!DOCTYPE html><html><head>
<script src="b4w.min.js"></script>
<script>
function hello() {
var m_main = b4w.require("main");
var m_data = b4w.require("data");
var canvas_elem = document.getElementById("canvas_id");
m_main.init(canvas_elem);
m_data.load("some_scene.json");
}
</script></head>
<body onload="hello()"><canvas id="canvas_id"></canvas></body></html>
14 October 2016 10:50 #12710
Merci Martial, non c'était moi qui n'avait pas compris.
Je vais la faire en français comme ça se sera plus simple pour nous deux.

Sorry english people

Donc si je te comprend bien, pour résoudre le problème il ne faut pas utiliser le web player de B4W.
Il faut donc modifier le fichier html.
Dans ton exemple, tu mets ton script dans le html, c'est seulement ça qu'il faut faire pour changer de webPlayer ?
Je t'avouerai que je ne m'y connais pas beaucoup dans ce domaine, la programmation et le 3D oui mais pas tout ce qui est web.
Le problème, c'est que moi j'utilise 5 scripts js différents et ils sont assez longs. Si je met tout ça dans le html ça va être le bordel. Je te mets mon html courant au cas où ça pourrait aider.

<!DOCTYPE html>
<html>

    <head>
        <title>Digibim</title>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" />

        <link rel="stylesheet" href="Digibim.css" type="text/css" />

        <script type="text/javascript" src="..\Appli\b4w.min.js"></script>
        <script type="text/javascript" src="..\Appli\script\Interface.js"></script>
	<script type="text/javascript" src="..\Appli\script\Utilitaire.js"></script>
	<script type="text/javascript" src="..\Appli\script\Movement.js"></script>
        <script type="text/javascript" src="..\Appli\script\Main.js"></script>

    </head>


    <body>

        <div id="main_canvas_container"></div>
		
		<div id="preloader_cont">
			<div id="prelod_static_path">
				<div id="prelod_dynamic_path"></div>
				<span>0%</span>
			</div>
		</div>	

    </body>

</html>
14 October 2016 18:45 #12729
Ce que je veux dire, c'est que si tu utilise le webplayer de blend4web auquel tu fais charger le json, tu as un memory leak qui se produit, et firefox crash au bout d'un certain temps.

En réalisant ton propre fichier html tu n'auras pas le probleme, il faut pas contre lui faire charger les json, d'où mon bout de code.
Tu as raison il faut toujours détacher le javascript dans son propre fichier, mon code était juste un exemple ;)

Sur ton code donné ci-dessus tu as aussi le crash?
17 October 2016 09:53 #12761
Donc une réponse est :
Le webPlayer de blend4web fait crasher Firefox au bout d'un certain temps à cause d'un memory leak.
Pour pallier à ça, il faut créer son propre webPlayer.

Pour continuer, Oui j'utilise exactement ce fichier html dans mon appli et j'ai le problème. Tu sembles étonné que j'ai le crash avec ce code. Est ce que j'utilise le webPlayer de B4W à ton avis ? Comment on reconnais qu'on l'utilise ?

Je met mon script main.js censuré si ça peut aider aussi :
"use strict"

// check if module exists
if (b4w.module_check("Main"))
    throw "Failed to register module: Main";

// register the application module
b4w.register("Main", function(exports, require) {

    // import modules used by the app
    var m_app = require("app");
    //...

    // import modules in external files
    var m_movement = require("Movement");
    var m_utilitaire = require("Utilitaire");
    var m_interface = require("Interface");

    //...

    exports.init = function () {
        m_app.init({
            canvas_container_id: "main_canvas_container",
            callback: init_cb,
            physics_enabled: true,
            alpha: true
        });
    }

    function init_cb(canvas_elem, success) {
        if (!success) {
            console.log("b4w init failure");
            return;
        }

        window.addEventListener("resize", on_resize);
        //...

        load();
    }

    function load() {
        var preloader_cont = document.getElementById("preloader_cont");
        preloader_cont.style.visibility = "visible";
        m_data.load("Digibim.json", load_cb, preloader_cb);
    }

    function load_cb(data_id) {
        //...
    }

    function preloader_cb(percentage) {
        var prelod_dynamic_path = document.getElementById("prelod_dynamic_path");
        var percantage_num = prelod_dynamic_path.nextElementSibling;

        prelod_dynamic_path.style.width = percentage + "%";
        percantage_num.innerHTML = percentage + "%";
        if (percentage == 100) {
            var preloader_cont = document.getElementById("preloader_cont");
            preloader_cont.style.visibility = "hidden";
            return;
        }
    }

    function on_resize() {
        m_cont.resize_to_container();
        m_interface.refresh_screen_size();
    }

    //other functions
    //...
});

// import the app module and start the app by calling the init method
b4w.require("Main").init();
18 October 2016 10:00 #12808
Normalement ton code ne devrait pas poser de problèmes.
Peux-tu donner des infos sur la version de ton Windows (32 ou 64), de Firefox, version de Blender, version de Blend4Web.

Essaye avec une scene simple (cube) sans passer par le webplayer.
Teste en mode sans echec de firefox (sans module donc)
18 October 2016 11:06 #12809
J'utilise Win7, 64 bits, Firefox 49.0.1, Blender 2.77a, B4W CE 16.08.

J'ai recréé une scène, donc le cube d'origine, export json + ton html, j'ai encore ce problème de mémoire qui ne cesse d'augmenter.
Je te met le dossier en pièce jointe pour que tu puisses constater.

Est-ce que le problème ne viendrais pas des autres fichiers : les uranium et .b4w_project et project.py ?
D'ailleurs à quoi servent ces fichiers ?

Je repose également ma question : A quoi reconnait-on que l'on utilise le web player de B4W ?

Merci pour ton aide.
 
Please register or log in to leave a reply.