Simon The underlying problem is that no one is maintaining FranTk at the moment. Perhaps you'd like to?
Anyway, FranTk seems to use an un-documented (and therefore unreliable) hook into GHC's RTS. When you use GHCi to load systems that link to RTS hooks, the dynamic linker's symbol table must be initialised to include those symbols. So the 'solution' here is to add 'run_queue_hd' to the RTS_SYMBOLS in ghc/rts/Linker.c. You'll need to build GHC from source do to this. Longer term, it'd be a good plan to see just what FranTk wants to know here, and what API the RTS should expose to support it. Admittedly, ghci dies with a rather unhelpful message Simon | -----Original Message----- | From: Meurig Sage [mailto:[EMAIL PROTECTED] | Sent: 12 June 2003 16:26 | To: Simon Peyton-Jones | Cc: Meurig Sage | Subject: Re: GHCi bug - the impossible happened loading FranTk with ghc-6.0 on Win32 | | Hi Simon | ... | | That being said as far as I remember: | FranTk contains the following function which attempts to check whether there | are any other threads waiting to be scheduled. If there are none then it | blocks waiting for more user input events, if there are any then it simply | queries the user input event queue and returns immediately. This makes use | of a variable run_queue_hd exported by Schedule.h (I think) in the ghc | run-time system. When I was working on this in ghc-5.0x ghc compiled ghc | code provided access to this variable but ghc-i did not. Not sure what Simon | Marlow has done to this since. | | Hope this helps | | The function that does the check is the following one in | FranTk/TclHaskellSrc/TclCompatibilityGhcSupportsConcurrency.hs. | | | isOnlyProcess :: IO Bool | isOnlyProcess = fmap toBool $ _casm_ ``%r = run_queue_hd == END_TSO_QUEUE;'' | where | toBool :: Int -> Bool | toBool 0 = False | toBool _ = True | | Meurig | | ----- Original Message ----- | From: "Simon Peyton-Jones" <[EMAIL PROTECTED]> | To: "Meurig Sage" <[EMAIL PROTECTED]> | Sent: Thursday, June 12, 2003 2:13 PM | Subject: FW: GHCi bug - the impossible happened loading FranTk with ghc-6.0 | on Win32 | | | Hi Meurig | | Are you still around? Do you remember what the issue is here? We | havn't the foggiest idea | | Simon | | -----Original Message----- | From: [EMAIL PROTECTED] | [mailto:[EMAIL PROTECTED] On Behalf Of Guest, | Simon | Sent: 12 June 2003 09:12 | To: [EMAIL PROTECTED] | Subject: GHCi bug - the impossible happened loading FranTk with ghc-6.0 | on Win32 | | I can use FranTk with GHC-6.0 on Windows XP just fine in some | configurations. | It's OK when compiling with GHC. It's also OK with GHCi when using | FranTk with no concurrency. | | However, when trying to load a concurrency enabled FranTk into GHCi, I | get "the impossible happened". | | I tried the workaround for the other GHCi bug, but this apparently | different, as shown below. | | Full disclosure requires me to highlight the following text from the | FranTk makefile: | | # Ununcomment this line to support concurrency. | # This support does NOT work with ghci. It does not currently export | # the special run_head_queue variable. Will allegedly | # be fixed in a future version of ghc. | | # this version supports concurrency | SUPPORTCONCURRENCY = TclCompatibilityGhcSupportsConcurrency.hs | | Is it simply that this hasn't been fixed yet? (I'm not sure what | symptoms are "expected".) | I'd very much like to be able to use FranTk with concurrency. Any | chance of a fix? | | cheers, | Simon | | ------------ | sjg-pc$ ghci | ___ ___ _ | / _ \ /\ /\/ __(_) | / /_\// /_/ / / | | GHC Interactive, version 6.0, for Haskell 98. | / /_\\/ __ / /___| | http://www.haskell.org/ghc/ | \____/\/ /_/\____/|_| Type :? for help. | | Loading package base ... linking ... done. | Loading package lang ... linking ... done. | Loading package text ... linking ... done. | Prelude> :t GHC.Err.error | GHC.Err.error :: forall a. [Char] -> a | Prelude> :set -package FranTk | Loading package concurrent ... linking ... done. | Loading package haskell98 ... linking ... done. | Loading package util ... linking ... done. | Loading package data ... linking ... done. | Loading package FranTk ... linking ... | \\pinkgin\redrum_disk2\sjg\software\I686-~$5\ghc\latest\bin\ghc.exe: | panic! (the `impossible' happened, GHC version 6.0): | can't load package `FranTk' | | Please report it as a compiler bug to [EMAIL PROTECTED], | or http://sourceforge.net/projects/ghc/. | | -- | Registered Office: Roke Manor Research Ltd, Siemens House, Oldbury, | Bracknell, | Berkshire. RG12 8FZ | | The information contained in this e-mail and any attachments is | confidential to | Roke Manor Research Ltd and must not be passed to any third party | without | permission. This communication is for information only and shall not | create or | change any contractual relationship. | | _______________________________________________ | Glasgow-haskell-bugs mailing list | [EMAIL PROTECTED] | http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs | | | _______________________________________________ Glasgow-haskell-bugs mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
