I would build and run with -s SAFE_HEAP=1 (and I see you have assertions on already), as mentioned on https://github.com/kripken/emscripten/wiki/Debugging . Hopefully that will report a warning or error about function pointer use that can help.
- Alon On Wed, May 28, 2014 at 4:30 PM, Trevor Linton <[email protected]> wrote: > Hi All, > > I'm having an issue mixing C++ and C code together. Functions are > assigned to a structure in a C library, but when the C library executes > (and thus the function pointed to on the structure) it ends up randomly > executing a C++ member of a class. > > The C library is cairo, and the calling library is a WebKit. I'm curious > if anyone can provide some direction on how to resolve this? Additional > information below is provided. > > > > *Linking to JS step:* > > /Users/tlinton/Library/Emscripten/emscripten/1.16.0/emcc -s > EXPORTED_FUNCTIONS="['_main','_scalefactor','_createWebKit','_setHtml','_setTransparent','_scrollBy','_resize']" > --embed-files ../src/assets/fontconfig/fonts@/usr/share/fonts > --embed-files ../src/assets/fontconfig/config/fonts.conf@/etc/fonts/fonts.conf > --embed-files ../src/assets/fontconfig/cache@/usr/local/var/cache/fontconfig > -s TOTAL_MEMORY=50331648 -s FULL_ES2=1 -o webkit.html -s ASSERTIONS=2 -O2 > -g2 --js-opts 0 -s ALIASING_FUNCTION_POINTERS=0 obj/src/webkit.WebView.o > obj/src/webkit.Main.o libxml.bc libjpeg_turbo.bc libpng.bc libfreetype.bc > libharfbuzz.bc libcairo.bc libcurl.bc libzlib.bc libpixman.bc > libfontconfig.bc libwebcore_xml.bc libwebcore_wtf.bc libwebcore_svg.bc > libwebcore_loader.bc libwebcore_html.bc libwebcore_dom.bc libwebcore_css.bc > libwebcore_rendering.bc libwebcore_page.bc libwebcore_style.bc > libwebcore_derived.bc libwebcore_platform.bc libwebcore_history.bc > libwebcore_editing.bc libwebcore_angle.bc libwebcore_support.b > > *No warnings are produced when compiled, i'm using emscripten 1.16.0. * > > > *Here's the stack trace:* > > > 1. _WTFReportAssertionFailurewebkit.js:593173 > 2. > __ZN7WebCoreL11enabledUndoERNS_5FrameEPNS_5EventENS_19EditorCommandSourceE > webkit.js:2898307 > 3. __cairo_spline_decompose_intowebkit.js:370173 > 4. __cairo_spline_decompose_intowebkit.js:370139 > 5. __cairo_spline_decompose_intowebkit.js:370133 > 6. __cairo_spline_decompose_intowebkit.js:370133 > 7. __cairo_spline_decomposewebkit.js:369909 > 8. __cairo_filler_curve_towebkit.js:329378 > 9. __cairo_path_fixed_interpretwebkit.js:331535 > 10. __cairo_path_fixed_fill_to_polygonwebkit.js:329220 > 11. __cairo_clip_get_polygonwebkit.js:296098 > 12. _clip_and_composite_boxes1278webkit.js:367803 > 13. __cairo_spans_compositor_fillwebkit.js:367435 > 14. __cairo_compositor_fillwebkit.js:299773 > 15. __cairo_image_surface_fillwebkit.js:323907 > 16. __cairo_surface_fillwebkit.js:377439 > 17. __cairo_gstate_fillwebkit.js:311587 > 18. __cairo_default_context_fillwebkit.js:302137 > 19. _cairo_fillwebkit.js:392852 > 20. > > __ZN7WebCoreL25drawPatternToCairoContextEP6_cairoP14_cairo_patternRKNS_9FloatRectEf > webkit.js:2589632 > 21. > > __ZN7WebCore20PlatformContextCairo20drawSurfaceToContextEP14_cairo_surfaceRKNS_9FloatRectES5_PNS_15GraphicsContextE > webkit.js:2589597 > 22. > > __ZN7WebCore11BitmapImage4drawEPNS_15GraphicsContextERKNS_9FloatRectES5_NS_10ColorSpaceENS_17CompositeOperatorENS_9BlendModeENS_27ImageOrientationDescriptionE > webkit.js:2582488 > 23. > > __ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageENS_10ColorSpaceERKNS_9FloatRectES6_NS_17CompositeOperatorENS_9BlendModeENS_27ImageOrientationDescriptionEb > webkit.js:2659116 > 24. > > __ZN7WebCore11ImageBuffer4drawEPNS_15GraphicsContextENS_10ColorSpaceERKNS_9FloatRectES6_NS_17CompositeOperatorENS_9BlendModeEb > webkit.js:2587143 > 25. > > __ZN7WebCore15GraphicsContext15drawImageBufferEPNS_11ImageBufferENS_10ColorSpaceERKNS_9FloatRectES6_NS_17CompositeOperatorENS_9BlendModeEb > webkit.js:2659343 > 26. > > __ZN7WebCore10ShadowBlur15drawLayerPiecesEPNS_15GraphicsContextERKNS_9FloatRectERKNS_11RoundedRect5RadiiERKNS_7IntSizeESC_NS0_15ShadowDirectionE > webkit.js:2685411 > 27. > > __ZN7WebCore10ShadowBlur24drawRectShadowWithTilingEPNS_15GraphicsContextERKNS_9FloatRectERKNS_11RoundedRect5RadiiERKNS_7IntSizeESC_ > webkit.js:2683998 > 28. > > __ZN7WebCore10ShadowBlur14drawRectShadowEPNS_15GraphicsContextERKNS_9FloatRectERKNS_11RoundedRect5RadiiE > webkit.js:2683682 > 29. > > __ZN7WebCore15GraphicsContext15fillRoundedRectERKNS_7IntRectERKNS_7IntSizeES6_S6_S6_RKNS_5ColorENS_10ColorSpaceE > webkit.js:2586467 > 30. > > __ZN7WebCore15GraphicsContext15fillRoundedRectERKNS_11RoundedRectERKNS_5ColorENS_10ColorSpaceENS_9BlendModeE > webkit.js:2659729 > 31. > > __ZN7WebCore20RenderBoxModelObject14paintBoxShadowERKNS_9PaintInfoERKNS_10LayoutRectEPKNS_11RenderStyleENS_11ShadowStyleEbb > webkit.js:2034044 > 32. > > __ZN7WebCore9RenderBox19paintBoxDecorationsERNS_9PaintInfoERKNS_11LayoutPointE > webkit.js:1996884 > 33. > __ZN7WebCore11RenderBlock11paintObjectERNS_9PaintInfoERKNS_11LayoutPointE > webkit.js:1924921 > 34. __ZN7WebCore11RenderBlock5paintERNS_9PaintInfoERKNS_11LayoutPointE > webkit.js:1922682 > 35. > > __ZN7WebCore11RenderLayer27paintBackgroundForFragmentsERKN3WTF6VectorINS_13LayerFragmentELj1ENS1_15CrashOnOverflowEEEPNS_15GraphicsContextES9_RKNS_10LayoutRectEbRKNS0_17LayerPaintingInfoEjPNS_12RenderObjectE > webkit.js:2140976 > 36. > > __ZN7WebCore11RenderLayer18paintLayerContentsEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2139294 > 37. > > __ZN7WebCore11RenderLayer31paintLayerContentsAndReflectionEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2138828 > 38. > > __ZN7WebCore11RenderLayer10paintLayerEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2137951 > 39. > > __ZN7WebCore11RenderLayer9paintListEPN3WTF6VectorIPS0_Lj0ENS1_15CrashOnOverflowEEEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2141104 > 40. > > __ZN7WebCore11RenderLayer18paintLayerContentsEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2139400 > 41. > > __ZN7WebCore11RenderLayer31paintLayerContentsAndReflectionEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2138828 > 42. > > __ZN7WebCore11RenderLayer10paintLayerEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2137951 > 43. > > __ZN7WebCore11RenderLayer9paintListEPN3WTF6VectorIPS0_Lj0ENS1_15CrashOnOverflowEEEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2141104 > 44. > > __ZN7WebCore11RenderLayer18paintLayerContentsEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2139400 > 45. > > __ZN7WebCore11RenderLayer31paintLayerContentsAndReflectionEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2138828 > 46. > > __ZN7WebCore11RenderLayer10paintLayerEPNS_15GraphicsContextERKNS0_17LayerPaintingInfoEj > webkit.js:2137951 > 47. > > __ZN7WebCore11RenderLayer5paintEPNS_15GraphicsContextERKNS_10LayoutRectEjPNS_12RenderObjectEPNS_12RenderRegionEj > webkit.js:2137604 > 48. > __ZN7WebCore9FrameView13paintContentsEPNS_15GraphicsContextERKNS_7IntRectE > webkit.js:2524510 > 49. __ZN7WebCore10ScrollView5paintEPNS_15GraphicsContextERKNS_7IntRectE > webkit.js:2776713 > 50. __ZN7WebCore14ChromeClientJS5paintEPNS_5TimerIS0_EE > webkit.js:3105032 > 51. > __ZN7WebCore14ChromeClientJS29invalidateContentsAndRootViewERKNS_7IntRectEb > webkit.js:3106334 > 52. __ZN7WebCore6Chrome29invalidateContentsAndRootViewERKNS_7IntRectEb > webkit.js:2470075 > 53. __ZN7WebCore10ScrollView23repaintContentRectangleERKNS_7IntRectEb > webkit.js:2776145 > 54. __ZN7WebCore9FrameView18doDeferredRepaintsEvwebkit.js:2521516 > 55. __ZN7WebCore9FrameView19endDeferredRepaintsEvwebkit.js:2517917 > 56. __ZN7WebCore9FrameView6layoutEbwebkit.js:2516637 > 57. __ZN7WebCore9FrameView37updateLayoutAndStyleIfNeededRecursiveEv > webkit.js:2524735 > 58. __ZN7WebCore14ChromeClientJS5paintEPNS_5TimerIS0_EE > webkit.js:3104890 > 59. > __ZN7WebCore14ChromeClientJS29invalidateContentsAndRootViewERKNS_7IntRectEb > webkit.js:3106334 > 60. __ZN7WebCore6Chrome29invalidateContentsAndRootViewERKNS_7IntRectEb > webkit.js:2470075 > 61. __ZN7WebCore9FrameView14invalidateRectERKNS_7IntRectE > webkit.js:2513833 > 62. > > __ZThn40_N7WebCore9FrameView23invalidateScrollbarRectEPNS_9ScrollbarERKNS_7IntRectE > webkit.js:2523162 > 63. > > __ZN7WebCore14ScrollableArea19invalidateScrollbarEPNS_9ScrollbarERKNS_7IntRectE > webkit.js:2767909 > 64. __ZN7WebCore9Scrollbar14invalidateRectERKNS_7IntRectE > webkit.js:2770328 > 65. __ZN7WebCore9Scrollbar10invalidateEvwebkit.js:2221663 > 66. > > __ZN7WebCore14ScrollableArea24setScrollbarOverlayStyleENS_21ScrollbarOverlayStyleE > webkit.js:2767897 > 67. > > __ZThn40_N7WebCore10ScrollView24setScrollbarOverlayStyleENS_21ScrollbarOverlayStyleE > webkit.js:2775744 > 68. > > __ZN7WebCore14ScrollableArea15didAddScrollbarEPNS_9ScrollbarENS_20ScrollbarOrientationE > webkit.js:2767708 > 69. > > __ZThn40_N7WebCore9FrameView15didAddScrollbarEPNS_9ScrollbarENS_20ScrollbarOrientationE > webkit.js:2526284 > 70. __ZN7WebCore10ScrollView23setHasVerticalScrollbarEbPb > webkit.js:2772320 > 71. __ZN7WebCore10ScrollView16updateScrollbarsERKNS_7IntSizeE > webkit.js:2772579 > 72. > __ZN7WebCore10ScrollView17setScrollbarModesENS_13ScrollbarModeES1_bb > webkit.js:2772436 > 73. __ZN7WebCore9FrameView6layoutEbwebkit.js:2516304 > 74. __ZN7WebCore8Document13implicitCloseEvwebkit.js:1283487 > 75. __ZN7WebCore11FrameLoader14checkCompletedEvwebkit.js:979836 > 76. __ZN7WebCore11FrameLoader15finishedParsingEvwebkit.js:977943 > 77. __ZN7WebCore8Document15finishedParsingEvwebkit.js:1294083 > 78. __ZN7WebCore20HTMLConstructionSite15finishedParsingEv > webkit.js:1164661 > 79. __ZN7WebCore15HTMLTreeBuilder8finishedEvwebkit.js:1225675 > 80. __ZN7WebCore18HTMLDocumentParser3endEvwebkit.js:1170415 > 81. > __ZN7WebCore18HTMLDocumentParser33attemptToRunDeferredScriptsAndEndEv > webkit.js:1169095 > 82. __ZN7WebCore18HTMLDocumentParser20prepareToStopParsingEv > webkit.js:1169040 > 83. __ZN7WebCore18HTMLDocumentParser6finishEvwebkit.js:1170468 > 84. __ZN7WebCore14DocumentWriter3endEvwebkit.js:968757 > 85. __ZN6WebKit7WebView7setHtmlEPciwebkit.js:15650 > 86. _mainwebkit.js:15795 > 87. callMainwebkit.js:3191748 > 88. doRunwebkit.js:3191805 > 89. (anonymous function) > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
