I'm trying to use the latest Google NaCl SDK. Following the instructions at https://developers.google.com/native-client/pepper18/devguide/tutorial
I downloaded the naclsdk tool from their site, ran update, and got a pepper_18 folder.
I set NACL_SDK_ROOT to the pepper_18 folder, went in to 'examples' and ran make. Everything seemed to compile just fine.
I started Chrome, looked in about: flags and about: plugins, and verified that NaCl is enabled. I installed the SDK Examples app (from: https://developers.google.com/native-client/pepper18/sdk/examples) and that works just fine.
Then I tried to run my locally built and hosted examples, going to http://localhost: 5301. The HTML loads fine but the NaCl content does not load. In the hello world examples, it says "Status: LOADING..." forever.
I double checked the HTTP server logs and I don't see any errors there. Is there another place I should be looking for logged errors?
Check for version mismatch
In Chrome navigate to about:version and check that the major version of Chrome is at least that of the Pepper version you used to build your examples.
Check the JavaScript console in Chrome for any errors
You can find it by clicking the wrench icon in the upper right-hand corner in Chrome and selecting Tools -> JavaScript Console.
Inspect the NaCl module for further information
In the JavaScript console, you can also inspect the embed element of the NaCl module. E.g., if the embed tag has id="nacl_module" you can inspect it by typing
theModule = document.getElementById('nacl_module');
theModule.lastError;
Check Chrome's output to stdout/stderr
On Mac or Linux start Chrome from the terminal and look at the output on the console. E.g., on the Mac, you'd typically go
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-nacl
On Windows, Chrome does not write to the terminal if started from a command prompt. For this reason you need to redirect stdout/stderr from Chrome by setting the environment variables NACLLOG, NACL_EXE_STDOUT, and NACL_EXE_STDERR. Point them to different files, e.g.,
NACLLOG = c:\my_project\nacl.log
NACL_EXE_STDOUT = c:\my_project\nacl_stdout.log
NACL_EXE_STDERR = c:\my_project\nacl_stderr.log
Then (re-)start Chrome (making sure these environment variables are in effect).
Connect a debugger
Instructions on using the debugging support (currently only 64-bit Windows and 64-bit Linux) are available at https://developers.google.com/native-client/pepper18/beta-docs/debugging.
Restarting Chrome means closing all windows
When developing for Native Client one often restarts Chrome. It is important to close all Chrome windows; otherwise it hasn't actually restarted.
I muddled through a few issues which I will document in case they help others:
Neglected to 'make' the examples (got a clue to make them from the asker's description).
Chrome would not let me run non-store chrome apps. Went to chrome://flags and enabled Native Client and Native Client GDB-based debugging.
The JavaScript console said the demo's nmf file under .../debug/ was missing. I changed the make config to build Debug instead of Release based on this.
Chrome console complained NativeClient: NaCl module load failed: ServiceRuntime: failed to start; NaCl's GDB debug stub requires --no-sandbox flag on Windows. See crbug…. Tried running Chrome from cmd with --no-sandbox. This results in an alert You are using an unsupported command-line flag: --nosandbox. Stability and security will suffer. The aforementioned error went away, but the examples still would not run - no UI.
Went back to chrome://flags and disabled Native Client GDB-based debugging.
Then most of the examples worked. The Google Drive demo complains Error: must be run as a packged app.
have you confirmed that you've run httpd.py from the examples folder? This script creates the localhost:5103 server that the apps can be ran from.
Also, what OS are you using?
~Main
Related
https://i.stack.imgur.com/pFR3B.png
Only one error:
08:22:50 FATAL: [0325/202250.082:ERROR:gpu_process_transport_factory.cc(1018)] Lost UI shared context.
It can happen that the Chromium engine can lose UI shared context in some cases. Usually, Chromium will restore the context and continue rendering. In that case, something happened that prevented Chromium from restoring the context.
As a workaround, you can try using accelerated lightweight rendering. It is faster than the usual lightweight rendering and does not use GPU. As a downside, the WebGL functionality will be disabled.
Could you please try enabling the full Chromium logs, reproduce the issue and send them to me? You can enable Chromium logs with the following Chromium switches: --enable-logging --v=1. The output will be saved to the file chrome_debug.log in Chrome's user data directory. Also, JxBrowser logs could be helpful too. You can find how to enable JxBrowser logs using the following link: Logging
In addition, the message you got, can be produced by the Chromium engine when the --disable-gpu or --disable-gpu-compositiong switch is passed to it.
Browser: Google Chrome is up to date
Version 68.0.3440.42 (Official Build) beta (64-bit)
OS: MacOS 10.13.5
Running the official example from https://developers.google.com/youtube/iframe_api_reference observing a unusual bug.
note: Observed problem is a separate project, but replicated it with this canonical example.
Loading code from a local webserver running on port 8082:
npx http-server
note: Added console logs to the onPlayerStateChange function to assist in troubleshooting.
If run with dev tools NOT OPEN observe the bug. If run with dev tools OPEN do not observe the bug. Also, the bug does not appear to happen in latest version of Firefox.
Console Output with dev tools NOT open (until after) - BUG
Console Output with dev tools open - NO BUG
Ok... Believe the odd behavior with it working with Chrome Dev Tools open fooled me. Just happened to find a reference to a new Chrome Browser flag (and feature) that disables autoplay videos. The answer is to set the following flag on your browser:
chrome://flags/#autoplay-policy
Apparently, if you set the player with playerVars to be muted and it will also work too (verified myself).
Having compiled and linked a NaCl module I am now attempting to debug why it seemingly won't run. Unfortunately the platform is not passing on ANY information about why nothing is happening.
I can't believe I'm asking something this basic but what do you have to do to get a single printf() statement to appear in stdout/stderr? Or in the Javascript console?
Yes I've read the SDK page about Debugging and enabled all the dozens of environment variables and flags, I've turned the logging verbosity up to max, and absolutely none of it makes the blindest bit of difference. No information whatsoever appears anywhere.
Occasionally the JS console will print the line "ServiceRuntime::Start (start failed)" (which also appears in stdout) but it's far more often that I get nothing at all.
NaCl SDK version is 28, am running Chrome 30 on OS X Mavericks.
Command used to start Chrome with the Graphics 3D example in the SDK:
export NACL_EXE_STDERR=~/nacl_stderr.log
export NACL_EXE_STDOUT=~/nacl_stdout.log
open -a "Google Chrome" http://localhost:5103/api/graphics_3d/ --args --enable-logging --no-sandbox --vmodule=ppb*=4
This should generate a ton of logging but the log files are never created.
As discussed on the mailing list, the solution is to make sure you invoke chrome (e.g. from the command line) using the actual path to the Chrome binary (for example, "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome") instead of using the open shell command, because open does not give you the stdout/stderr streams from the application it launches.
I seem to be having difficulties getting the trace function to output anything to the console in either Eclipse with the Flex Plug-in, Flex Builder, or even FlexBeans (the Netbeans plug-in for Flex). I have removed and then reinstalled the Flash player 10 debugger version for both Firefox and IE, rebooting after uninstalling them and then after re-installing them. I have removed all old versions of Java and updated to the most recent version.
mm.cfg is configured correctly to allow the trace actions to appear in flashlog.txt
I tried removing the Flex Plug-in for eclipse to re-install, and now that I re-installed, I cannot create new Flex projects. I would rather not uninstall Flex Builder for fear that it will also behave strangely.
ANY ideas would be useful. Ideally, I need the plug-in to work, but any way I could get tracing to output to the console (in ANY IDE) would be better than what I have now.
I'm not sure what you mean by "Flash debugger for both Firefox and IE"; are you referring the debugger versions of the Flash Player available here?
http://www.adobe.com/support/flashplayer/downloads.html
If not, you definitely need those installed in order to be able to write trace() output to the IDE console.
I'm almost positive that this is not the issue, but it has confused me on a couple of occasions.
The Debug Application (as opposed to Run Application) keyboard command is different on Mac and PC. I use both and have gotten them mixed up, which results in my Running when I think I am Debugging, which of course leads to know trace outputs in the console.
Most likely not it, but doesn't hurt to mention it (I hope) :)
-- Evan
How are you testing the debugger? Have you tried going somewhere like with lots of ads that generally still have their traces in? Or are you just testing it with your own swfs? Have you installed the projector debug version? How is eclipse / flex configured to launch test swfs? Is it in the browser, or in the stand alone player? Do you have any weird mxmlc settings?
I assume you've followed all these instructions?
http://kb2.adobe.com/cps/193/tn_19323.html
This is actually a combination of issues. The minor issue was that one application was interfering with Flex Builder Plug-in. The major issue had to do with a setting which had gotten changed on the Flash debugger.
If you right-click the running SWF and then click Debugger, you can (essencially) tell the VM where to listen for trace actions. This had been set to another machine on the network, and not my local machine. As soon as that was switched, everything restored itself.
My swf is occasionally crashing the browser (or just crashing the plugin as chrome tells me).
How do I diagnose the bug? I am developing for flash player 9 using flex.
Things I have tried:
Turned on log files so I can see trace("...") output. However, my log files, and my swf, are ending at inconsistent termination points.
Install the debug version of the flash player
Tried different browsers (today I am on vista, and can reproduce the bug on four browsers).
I am hoping there is a [legible] stack trace from the plugin. Any suggestions?
It's likely that the flash plugin is causing the crash before your log files can be flushed. The only thing I can recommend is to install the Windows Debugging Tools.
Then bring up a command prompt (as administrator if in vista), and type the following:
cd "%programfiles%\Debugging Tools for Windows"
adplus -crash -pn iexplore.exe
(Obviously, change iexplore.exe to whatever browser you are running against.)
Now, use your flex application in the browser until it crashes. This will create a crash dump in %programfiles%\Debugging Tools for Windows\Crash_Mode__Date_02-18-2009__Time_14-40-0202 (actual date will be used).
You can now send that mini-dump (smallest dmp file) to Adobe so they can analyze it properly.
If you want to view the (native) call stacks in hope of discovering what caused the issue, you can load windbg and load the dump file (File > Open Crash Dump). Once it's loaded type the following at the windbg commandline and hit enter:
~* kb 2000
Some specifics on the bug I uncovered regarding masks and textfields:
http://summitprojectsflashblog.wordpress.com/2008/04/16/flash-browser-crashing-bug/
http://team.bkwld.com/2007/11/21/flash-player-crashes-browser-when-closing-window-possible-fix/