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.

Reply via email to