我们最近使用 ChromeDriver v80.0.3987.16 和 Chrome v80.0.3987.87(官方版本)(64 位)升级了测试环境,升级后,即使是最小的程序也会产生大量以下严重日志:
[1581082019.282][SEVERE]: Timed out receiving message from renderer: 0.100
[1581082020.245][SEVERE]: Timed out receiving message from renderer: 0.100
Run Code Online (Sandbox Code Playgroud)
早些时候,在使用 ChromeDriver v79.0 / Chrome v79.0 组合之前,偶尔会观察到这些消息。
最小代码块:
public class chromeDemo
{
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.quit();
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
Starting ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs/branch-heads/3987@{#185}) on port 9194
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious …Run Code Online (Sandbox Code Playgroud) selenium google-chrome renderer chromium selenium-chromedriver
我继续收到此错误报告
Fatal Exception: java.lang.IllegalStateException
eglMakeCurrent failed EGL_BAD_ALLOC
android.view.HardwareRenderer$GlRenderer.createSurface
Run Code Online (Sandbox Code Playgroud)
在我在Play商店的应用程序上.导致此次崩溃的原因是什么?以下是完整的错误日志.
java.lang.IllegalStateException: eglMakeCurrent failed EGL_BAD_ALLOC
at android.view.HardwareRenderer$GlRenderer.createSurface(HardwareRenderer.java:1354)
at android.view.HardwareRenderer$GlRenderer.createEglSurface(HardwareRenderer.java:1241)
at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:1058)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1811)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1235)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6472)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:573)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud) 我有点坚持SDL2纹理背后的逻辑.对我来说,它们毫无意义,因为你无法吸引他们.
在我的计划,我有几个面(或什么是表面之前,我切换到SDL2),我只是图混合在一起,形成层.现在,似乎我需要创建几个渲染器和纹理来创建相同的效果,因为SDL_RenderCopy它采用纹理指针.
不仅如此,所有渲染器都必须来自一个窗口,我明白这一点,但仍然会让我更加严重.
这一切看起来都非常庞大和缓慢.我错过了什么吗?有没有办法直接绘制纹理?纹理有什么意义,我可以安全地使用多个(如果不是数百个)渲染器来代替表面吗?
我想在登录表单中添加一些iOS特定的标记属性.如果我查看我的网页源代码,那么属性autocorrect,autocapitalize和spellcheck就不存在了.这是什么原因?我正在使用JSF 2.x.
<h:inputText id="user-name" forceId="true" value="#{login.username}" style="width:120px;"
autocorrect="off" autocapitalize="off" spellcheck="false" />
Run Code Online (Sandbox Code Playgroud) 当我在JSF中学习自定义组件开发时,我对组件系列,组件类型和渲染器类型之间的关系感到困惑.例如,我注册了一个渲染器和一个自定义组件,如下所示.
faces-config.xml:
<component>
<component-type>study.faces.Div</component-type>
<component-class>javax.faces.component.UIPanel</component-class>
</component>
<render-kit>
<render-kit-id>HTML_BASIC</render-kit-id>
<renderer>
<component-family>javax.faces.Panel</component-family>
<renderer-type>study.faces.DivRenderer</renderer-type>
<renderer-class>com.study.ui.DivRenderer</renderer-class>
</renderer>
</render-kit>
Run Code Online (Sandbox Code Playgroud)
我还在my.taglib.xml文件中注册了一个新标签,如下所示:
<tag>
<tag-name>div</tag-name>
<component>
<component-type>study.faces.Div</component-type>
<renderer-type>study.faces.DivRenderer</renderer-type>
</component>
</tag>
Run Code Online (Sandbox Code Playgroud)
这种配置非常有效.但是,我不明白为什么<component-family>javax.faces.Panel</component-family>在渲染器注册时需要该行.在my.taglib.xml,组件和渲染器是连接的,恕我直言,它应该足以为组件选择合适的渲染器.附加参数的用途是什么<component-family>?
我做了谷歌研究,我得到的所有答案都说"一个渲染器可以用来渲染多个组件.这些组件属于一个系列".但这些陈述并没有明确我的困惑.有人可以解释组件类型,组件系列和渲染器选择策略之间的关系吗?(希望有一个很好的例子.)
我正在使用xamarin表单...有时当我尝试回到我的上一页时,我看到了这个(Android设备):
System.NotSupportedException:无法从本机句柄0xbeb4a30c激活Xamarin.Forms.Platform.Android.Platform + DefaultRenderer类型的实例
我在标签渲染器和框渲染器中看到了同样的问题,但我解决了在自定义渲染器中创建构造函数的问题,因为下链接建议:
MonoDroid:调用自定义视图的构造函数时出错 - TwoDScrollView
但是没有关于DefaultRenderer错误的信息,就像我过去30天搜索过的所有内容一样......我疯了......
完全例外:
System.NotSupportedException:无法从本机句柄0xbecdf3ac(key_handle 0x24da7695)激活Xamarin.Forms.Platform.Android.Platform + DefaultRenderer类型的实例.
04-04 11:51:53.914 D/Mono(30832):DllImport尝试加载:'/ system/lib/liblog.so'.04-04 11:51:53.914 D/Mono(30832):DllImport加载库'/system/lib/liblog.so'.04-04 11:51:53.914 D/Mono(30832):DllImport搜索:'/ system/lib/liblog.so'('/ system/lib/liblog.so').04-04 11:51:53.914 D/Mono(30832):搜索'__android_log_print'.04-04 11:51:53.914 D/Mono(30832):探测'__android_log_print'.04-04 11:51:53.914 D/Mono(30832):找到'__android_log_print'.04-04 11:51:53.924 I/MonoDroid(30832):UNHANDLED EXCEPTION:04-04 11:51:53.944 I/MonoDroid(30832):System.NotSupportedException:无法激活Xamarin.Forms.Platform.Android类型的实例.Platform + DefaultRenderer来自本机句柄0xbecdf3ac(key_handle 0x24da7695).---> System.MissingMethodException:找不到Xamarin.Forms.Platform.Android.Platform + DefaultRenderer ::.ctor(System.IntPtr,Android.Runtime.JniHandleOwnership)---> Java.Interop.JavaLocationException的异常:类型'Java.Interop.JavaLocationException'被抛出.04-04 11:51:53.944 I/MonoDroid(30832):---内部异常堆栈跟踪结束--- 04-04 11:51:53.944 I/MonoDroid(30832):at Java.Interop.TypeManager.CreateProxy (System.Type类型,System.IntPtr句柄,Android.Runtime.JniHandleOwnership传输)[0x00054] in:0 04-04 11:51:53.944 I/MonoDroid(30832):at Java.Interop.TypeManager.CreateInstance(System. IntPtr句柄,Android.Runtime.JniHandleOwnership transfer,System.Type targetType)[0x00111] in:0 04-04 11:51:53.944 I/MonoDroid(30832):---内部异常堆栈跟踪结束--- 04- 04 11:51:53.944 I/MonoDroid(30832):at Java.Interop.TypeManager.CreateInstance(System.IntPtr handle,Android.Runtime.JniHandleOwnership transfer,System.Type targetType)[0x0017d] in:0 04-04 11: 51:53.944 I/MonoDroid(30832):在Java.Lang.Object.GetObject(System.IntPtr句柄,Android.Runtime.JniHandleOwnership transfer,System.Type类型)[0x000b9]中:0 04-04 11:51:53.944 I/MonoDroid(30832):在Java.Lang.Object._GetObject [T](System.IntPtr句柄,Android.Runtime.JniHandleOwnership …
我在清理WebGl-Scenes时遇到了问题.我正在使用带有WebGlRenderer的Three.js.在我的应用程序中,我必须经常更改视图,因此需要始终渲染新场景.现在,我摧毁并重新初始化整个Threejs场景.切换场景约15 - 20次后,我收到以下警告:
WARNING: Too many active WebGL contexts. Oldest context will be lost.
切换几次后,上下文完全丢失,应用程序崩溃.
清理时有没有办法破坏当前的WebGl上下文?或者,WebGlRenderer在实例化时是否始终创建新的WebGl上下文?
我正在使用Three.js R64.
我有一个JavaFX APP,其中包含两个列表视图,显示从我的服务器收到的传入客户订单(使用自定义cellfactory).我还有一些tableview显示来自Postgres数据库的信息(这些信息分布在tabpane中的几个选项卡中).用户必须接受订单(通过点击它),并在文本框中输入一些信息.
该应用程序最初是使用Java7编写的.我没有任何问题.但最近我决定改用Java8.我修改了我的代码以使用lambdas并在应用程序中添加了一些额外的东西:
现在,应用程序运行良好,但在运行2-3小时后,它变得迟缓.因为对我来说我模拟使用jstack分析器内的行为,是硬top -H,并匹配pid以nid找出发生了什么.
这样我发现罪魁祸首是QuantumRendererCPU使用率为95 +%:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30300 utilizat+ 20 0 5801608 527412 39696 S 95,1 6,5 60:57.34 java
"QuantumRenderer-0" #9 daemon prio=5 os_prio=0 tid=0x00007f4f182bb800 nid=0x765c runnable [0x00007f4eeb2a1000]
java.lang.Thread.State: RUNNABLE
at com.sun.prism.es2.X11GLDrawable.nSwapBuffers(Native Method)
at com.sun.prism.es2.X11GLDrawable.swapBuffers(X11GLDrawable.java:50)
at com.sun.prism.es2.ES2SwapChain.present(ES2SwapChain.java:186)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:107)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
运行应用程序的机器使用的是润滑剂的64位版本.
我无法弄清楚我应该在哪里找出问题所在......
任何人都可以帮助如何在Angular 2中找到具有特定类名的"All"元素吗?我认为这将是微不足道的,但它给了我更多准备好的问题.
<span class="classImLookingFor">foo</span>
<span class="classImLookingFor">Voo</span>
<span class="classImLookingFor">Moo</span>
Run Code Online (Sandbox Code Playgroud)
我认为通过执行下面的操作会返回类"classImLookingFor"的所有元素,但它只返回第一个实例.
constructor(private renderer: Renderer){}
ngAfterViewInit(){
const el = this.renderer.selectRootElement('.classImLookingFor');
this.renderer.setElementAttribute(el, 'tabindex', 0);
}
Run Code Online (Sandbox Code Playgroud)
之后,我的标记看起来像这样.
<span class="classImLookingFor" tabindex="0">foo</span>
<span class="classImLookingFor">Voo</span>
<span class="classImLookingFor">Moo</span>
Run Code Online (Sandbox Code Playgroud)
看起来我应该能够创建一个Renderer数组,但这似乎也不起作用.我需要用该类名操作每个元素.提前致谢
执行摘要:如何在代码中指定OpenMP应该只为REAL内核使用线程,即不计算超线程的线程?
详细分析:多年来,我在空闲时间编写了一个仅限SW的开源渲染器(光栅化器/光线跟踪器).可以从这里获得GPL代码和Windows二进制文件:https: //www.thanassis.space/renderer.html 它在Windows,Linux,OS/X和BSD下编译并运行良好.
我上个月推出了一种光线追踪模式 - 生成的图片质量飙升.不幸的是,光线跟踪比光栅化要慢几个数量级.为了提高速度,就像我对光栅化器一样,我为光线跟踪器添加了OpenMP(和TBB)支持 - 以便轻松利用额外的CPU内核.光栅化和光线跟踪都很容易进行线程化(每个三角形工作 - 每像素工作).
在家里,凭借我的Core2Duo,第二核心帮助了所有模式 - 光栅化和光线跟踪模式的加速都在1.85x和1.9x之间.
问题:当然,我很想看到CPU的最高性能(我也玩"GPU",初步的CUDA端口),所以我想要一个坚实的基础进行比较.我把代码交给了我的一个好朋友,他可以使用16英寸,1500美元英特尔超级处理器的"野兽"机器.
他以"最重"模式运行它,光线跟踪模式......
......他的速度是我的Core2Duo的五分之一(!)
喘气 - 恐怖.刚刚发生了什么?
我们开始尝试不同的修改,补丁,......最终我们弄明白了.
通过使用OMP_NUM_THREADS环境变量,可以控制生成的OpenMP线程数.随着线程数从1增加到8,速度增加(接近线性增加).在我们越过8的那一刻,速度开始减弱,直到我的Core2Duo速度的五分之一,当使用所有16个核心时!
为什么8?
因为8是真实核心的数量.其他8个是...超线程的!
理论:现在,这对我来说是新闻 - 我看到超线程在其他算法中帮助很多(高达25%),所以这是出乎意料的.显然,即使每个超线程核心都有自己的寄存器(和SSE单元?),光线跟踪器也无法利用额外的处理能力.这引导我思考......
它可能不是缺乏处理能力 - 它是内存带宽.
光线跟踪器使用边界体积层次结构数据结构来加速光线三角形交叉.如果使用的芯超线程,则每个在一对"逻辑核"的,试图从在该数据结构不同的地方(即,在存储器中),以读 - 和CPU高速缓存(每对本地)完全捶打.至少,这是我的理论 - 任何建议都是最受欢迎的.
所以,问题是: OpenMP检测"核心"的数量并产生与之匹配的线程 - 也就是说,它包括计算中的超线程"核心".就我而言,这显然会导致灾难性的结果,速度方面.有谁知道如何使用OpenMP API(如果可能的话,可移植)只为REAL内核生成线程,而不是超线程的线程?
PS代码是开放的(GPL),可在上面的链接中找到,随时可以在您自己的机器上重现 - 我猜这将在所有超线程CPU中发生.
PPS原谅帖子的长度,我认为这是一种教育经历,想分享.