From: Dave D. <da...@dr...> - 2011-03-15 21:32:14
|
There's NO multitasking going on in my program, but I have a couple of multitasking related problems. I can provide a good deal more information to help sort out this issue if it's possibly related to oodialog 4.2.0 beta, but it's not just a matter of cutting and pasting a few lines of code, so to save you (and me!) from lots of digging, my initial query is simply . Are there any known problems in the beta so far relating to either "deadlock detected" or user routines simply stopping dead waiting for resources belonging to other user classes? One quick example . (It's for my driving school, and this bit is creating a new lesson in my diary. I want to select from a list of active pupils, but I have checkboxes so that I can also select from pupils who have passed their driving test or who I've marked "dormant" because I haven't seen them for a while.) ::method SetupNewLesson -- called from initdialog expose mainmenu self~activetick = .true -- these are from checkboxes on the dialog self~passedtick = .false self~dormanttick = .false self~SetupPupilCombo ::method setuppupilcombo -- called from setupnewlesson or after a checkbox is changed. expose mainmenu del = self~getcomboitems(100) say "Deleting" del "items" do d = del to 1 by -1 say "RC="self~deletecomboentry(100,d) "("d")" end d do p = 1 to mainmenu~pupils -- this is the problem line if (mainmenu~pupil[p]["status"] = "Active" & self~activetick = .true) |, (mainmenu~pupil[p]["status"] = "Passed" & self~passedtick = .true) |, (mainmenu~pupil[p]["status"] = "Dormant" & self~dormanttick = .true), then do say "Adding" mainmenu~pupil[p]["name"] "..." self~addcomboentry(100,mainmenu~pupil[p]["name"]) end end p On the first call (from initdialog), the seupnewlesson method calls setuppupilcombo and all is well. The combobox contains a list of "active pupils". If I check or uncheck any of the 3 checkboxes (active/passed/dormant) the setuppupilcombo method gets called to remove all the pupil names from the combo and add a new list of names based on whether their status is active, passed or dormant. On this second call, the method stops at the marked "problem line" seemingly waiting for the pupils attribute of the mainmenu class to become free. Control returns to the dialog with an empty combobox and all controls on the dialog are unresponsive. If I press ESC to quit the dialog, control returns to the parent window but all the queued methods get called and they fail because the dialog has ended. Putting a "trace I" just above the problem line gives this output from the 2nd call of setuppupilcombo Deleting 11 items RC=10 (11) RC=9 (10) RC=8 (9) RC=7 (8) RC=6 (7) RC=5 (6) RC=4 (5) RC=3 (4) RC=2 (3) RC=1 (2) RC=0 (1) 2157 *-* do p = 1 to mainmenu~pupils >L> "1" >V> MAINMENU => "a MAINMENU" And this is where the trace pauses until I end the dialog, then the trace continues, trying to add the relevant pupils to the combobox. The other problem is intermittent, and would take quite some explaining, but it results in program termination with a message like "deadlock detected in guarded method". I don't seem to be able to recreate that one now! Back to the main point - my problem or a problem with oodialog? Thanks, Dave Dawson |
From: Mark M. <mie...@gm...> - 2011-03-16 15:42:59
|
On Tue, Mar 15, 2011 at 2:31 PM, Dave Dawson <da...@dr...> wrote: > There’s NO multitasking going on in my program, but I have a couple of > multitasking related problems. Windows is a multi-tasking operating system, so there is always multi-tasking going on in any program running on Windows. > Are there any known problems in the beta so far relating to either “deadlock > detected” or user routines simply stopping dead waiting for resources > belonging to other user classes? Yes. What version of the beta are you using? I'm been refreshing the beta builds about once a month. The latest is from around the end of February / first of March. If you are using the first version I put up, then you definitely need to get the latest. If you have the latest version, then please read the section in the docs on coding event handlers. 5.7.1 in particular. Also look at 5.7 and 2.2.4. Plus, can you let me know if you do or don't have the latest version. > One quick example … > ... > Putting a “trace I” just above the problem line gives this output from the > 2nd call of setuppupilcombo ... > And this is where the trace pauses until I end the dialog, then the trace > continues, trying to add the relevant pupils to the combobox. It's hard for me to tell exactly where the problem is here. Is it at all possible for you to send me the complete program so I can look into this? Just mail it to me at my gmail address miesfeld at gmail.com. > Back to the main point – my problem or a problem with oodialog? Either or both. <grin> Try the latest version of the beta if you have the first version, and let me know. If you already have the latest version, try making the pupils attribute unguarded and let me know if that fixes the problem. Otherwise, the easiest way for me to see where the problem is would be to send me your program. Thanks for bringing this up. -- Mark Miesfeld |
From: Dave D. <da...@dr...> - 2011-03-16 22:40:54
|
> Windows is a multi-tasking operating system, so there is always multi-tasking going on in any program running on Windows. <grins back> Yes, ok, but I meant I'm not running methods of my own concurrently! E.g. there's no "reply" in my prog! > Yes. What version of the beta are you using? I'm been refreshing the beta builds about once a month. The latest is from around the end of February / first of March. If you are using the first version I put up, then you definitely need to get the latest. I downloaded on 27th Feb, and the latest on sourceforge now, was dated 26th. The file name "switch_ooDialog420_410-4.2.0.6800-x86_32.exe" I'm using matches sourceforge, so I'm pretty sure I'm using the latest. > If you have the latest version, then please read the section in the docs on coding event handlers. 5.7.1 in particular. Also look at 5.7 and 2.2.4. Done. Phew. I learned REXX in about 1983 on the VM operating system and became a VM and REXX bigot way back then. Object orientation is something I'm learning long after giving up writing REXX as part of my job. I understand most of those sections pretty well, but I need to "play" to get a proper handle on things. I had already read some of those sections. > It's hard for me to tell exactly where the problem is here. Is it at all possible for you to send me the complete program so I can look into this? Just mail it to me at my gmail address miesfeld at gmail.com. Yes - no problem, but I'll understand if you give up before getting very far 'cos I suspect I don't do everything the way I should and therefore readability may not be great. I'm writing this email on a laptop which refuses to send email via a tethered iPhone so you'll probably get this way after 9pm UK time, and it'll be tomorrow before I write some instructions on setting up the program to run (it's a work in progress and has been for eons, and it requires a little setup. If we're lucky, you may get away with simply creating a directory for it to use). > Either or both. <grin> Suspected as much ;-) > Try the latest version of the beta if you have the first version, and let me know. If you already have the latest version, try making the pupils attribute unguarded and let me know if that fixes the problem. It did! Or at least making it AND the "pupil" attribute (array) unguarded did. I just don't understand why! > Otherwise, the easiest way for me to see where the problem is would be to send me your program. I'll send it anyway, as you may be able to see WHY I needed to make the attributes unguarded. You can marvel at my ineptitude ;-) Certainly some of the code was written long before I had a real handle on all the object stuff (which I still don't). Please don't spend hours debugging my code - not because I don't want help, but more because I'd be embarrassed to take your time up. If it helps to unearth potential ooDialog problems, feel free to bash away at my code. You'll be able to see the bits I've converted to pixels after the last time we spoke, and how the main screen resizes nicely now thanks to your pointers. Many thanks again, Dave Dawson |