[GHC] #12079: seg fault while using gtk

GHC ghc-devs at haskell.org
Wed May 18 02:57:07 UTC 2016


#12079: seg fault while using gtk
--------------------------------------+----------------------------------
           Reporter:  doofin          |             Owner:
               Type:  bug             |            Status:  new
           Priority:  normal          |         Milestone:
          Component:  Compiler        |           Version:  7.10.3
           Keywords:                  |  Operating System:  Linux
       Architecture:  x86_64 (amd64)  |   Type of failure:  Runtime crash
          Test Case:                  |        Blocked By:
           Blocking:                  |   Related Tickets:
Differential Rev(s):                  |         Wiki Page:
--------------------------------------+----------------------------------
 {{{#!hs
 {-# LANGUAGE OverloadedStrings #-}

 module Main where
 import Graphics.UI.Gtk
 import System.Glib.Signals
 import Graphics.UI.Gtk.SourceView
 import Graphics.UI.Gtk.SourceView.SourceGutter
 import Graphics.UI.Gtk.SourceView.SourceCompletion
 import Graphics.UI.Gtk.SourceView.SourceMark
 import Graphics.UI.Gtk.SourceView.SourceBuffer
 import Graphics.UI.Gtk.Multiline.TextBuffer
 import Graphics.UI.Gtk.Gdk.EventM
 import Control.Monad.Trans
 import System.FSNotify
 import System.Environment
 import Control.Concurrent (threadDelay)
 import Control.Monad (forever)
 import qualified Data.Text as T
 import qualified Data.Text.IO as T
 import Data.Tuple
 import Data.Tuple.HT
 import Control.Concurrent

 main=do
   args<-getArgs
   print args
   let filename=head args
   txt<-T.readFile filename
   gtk txt $ \srcbf->do
     notify $ \evt -> case evt of
       Modified fp _->if (T.unpack $ Prelude.last $ T.splitOn "/" $ T.pack
 fp)==filename
                      then do
                        txtnew<-T.readFile $ head args
                        postGUIAsync $ textBufferSetText srcbf
 (txtnew::T.Text)
                      else return ()
       _->return ()
   return ()

 notify action=withManager $ \mgr-> do
   --mgr<-startManager
   watchTree
       mgr          -- manager
       "."          -- directory to watch
       (const True) -- predicate
       $ \evt->do
           print evt-- action
           action evt
   forever $ threadDelay 1000000 -- sleep forever (until interrupted)

 gtk inittext act= do
   initGUI
   window <- windowNew
   windowSetDefaultSize window 900 600
   windowSetPosition window WinPosCenter

   srcbf<-sourceBufferNew Nothing
   sourceView <- sourceViewNewWithBuffer srcbf
   scrolledWindow <- scrolledWindowNew Nothing Nothing

   sourceViewSetShowLineNumbers sourceView True
   textViewSetWrapMode sourceView WrapWord
   textBufferInsertAtCursor srcbf ("fdsf"::String)
   textBufferSetText srcbf inittext

   scrolledWindow `containerAdd` sourceView
   window `containerAdd` scrolledWindow
   widgetShowAll window

   on sourceView keyPressEvent  $ do
     kl<-eventKeyName
     liftIO $ putStr $ show $ kl
     liftIO $ mapM_ (\(x,y)->if x==kl then textBufferInsertAtCursor srcbf
 (y::String) else return ()) pairs
     return False
   on window deleteEvent $ liftIO mainQuit >> return False
   connectGeneric "notify::cursor-position" False srcbf $ do
     print "adsfd"

   forkIO $ do
     act srcbf

   --onDestroy window  mainQuit


   mainGUI


 pairs=[("parenleft",")"),("[","]")]

 }}}

 the program runs ok before adding the line

 {{{#!hs
 connectGeneric "notify::cursor-position" False srcbf $ do
     print "adsfd"
 }}}


 then i run
   ghc thisfile.hs -debug
   gdb thisfile
   run somefile

 move the cursor inside the textview,then seg fault happened


   bt


 {{{
 result:

 Program received signal SIGSEGV, Segmentation fault.
 0x00007fffeea0f4f0 in ?? ()
 (gdb) bt
 #0  0x00007fffeea0f4f0 in ?? ()
 #1  0x00000000000002f5 in ?? ()
 #2  0x0000000000000309 in ?? ()
 #3  0x00007fffffff44f8 in ?? ()
 #4  0x00007fffffff4458 in ?? ()
 #5  0x00007fff04fe0101 in ?? ()
 #6  0x0000000000000113 in ?? ()
 #7  0x00000000000002e5 in ?? ()
 #8  0x0000000001db00ac in ?? ()
 #9  0x00007fffeea13a21 in ?? ()
 #10 0x00007fffeeaf5010 in ?? ()
 #11 0x0000000000a8d709 in base_GHCziIOziFD_zdfBufferedIOFD2_closure ()
 #12 0x00007fffeea07942 in ?? ()
 #13 0x0000000000a8593a in base_GHCziIOziBuffer_WriteBuffer_closure ()
 #14 0x0000000000000800 in ?? ()
 #15 0x0000000000000000 in ?? ()

 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12079>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list