Thanks Bill.  

I do agree with binary search when I (think I) know what the search domain 
consists of. 
But I wasn’t sure.  It turns out that ~user/startup.ijs was at fault;  
sequential 
commenting was adequate for that quite short script, leading to identification 
of a call 
to “allolddefs” or similar (it’s not on this ipad!).  See my earlier message, 
around 
midnight London time.  This legacy of a J902 beta,  which I hadn’t removed, 
apparently raises a drastic error in J904 beta-d,  but nothing earlier!  

Henry wonders whether a Windows 11 change is at fault,  but that OS doesn’t 
appear 
to have been updated so recently as to be the cause of the new behaviour with 
J904 beta-d.

Thanks again for your help,

Mike


Sent from my iPad

> On 23 May 2022, at 00:37, bill lam <[email protected]> wrote:
> 
> You should follow Raul's suggestion and bisect your booting instead of
> commenting out random parts. Try to locate the exact line of crash first.
> 
> 
> On Mon, 23 May 2022 at 6:22 AM 'Michael Day' via Beta <[email protected]>
> wrote:
> 
>> It emerged with J902 beta-e - this isn't amazing memory recall;
>> olddefs.ijs appears in my old
>> J installations from J902 onwards,  and has a date-stamp of 16/Aug/20.
>> 
>> Here's most of the relevant email by Eric:
>> 
>>    J902-beta-e available for windows/macos/linux.
>> 
>>    This beta prints a warning message to your session if it encounters
>> code
>>    that will not work in future releases.
>> 
>>    The warning is:
>>    ************ Old-style definition encountered.  It will be invalid
>> after
>>    the beta period.
>>    It has x/y without u/v/m/n **********
>> 
>>    The base library and addons have already been updated with the required
>>    coding change.
>> 
>> Here's a copy (indented) of olddefs.ijs (66 lines):
>> 
>>    require 'strings'
>>    NB. To check for old-style modifiers, load this script, and load the
>>    locale you want to check.  Then
>>    NB. olddefs_localetocheck_ 0
>>    NB. olddefs_localetocheck_ 1
>>    NB. Any names printed when y=0 MUST be repaired; those printed only
>>    when y=1
>>    NB. should be inspected
>> 
>>    NB. To check all loaded locales at once, use
>>    NB. allolddefs <0 or 1>
>> 
>>    NB. check to see if a definition is old-style
>>    NB. Returns 1 if it is
>>    NB. y is AR of a modifier
>>    NB. x is severity level, 0 or 1
>>    NB. 1 : '5!:5 <''x''' cannot be detected; it returns 0 if sev level
>>    is 0, 1 if sev level is 1
>>    isarolddef_z_ =: 4 : 0"0
>>    sevlevel =. x
>>    ar =. > y
>>    NB. Analyze AR type
>>    select. {. ar
>>    case. <,'4' do. NB. A A or A C or C A
>>       +./ sevlevel isarolddef 1{::ar return.   NB. Look at children,
>>    return 1 if either is old-style
>>    case. <,':' do.
>>       if. 1=#ar do. 0 return. end.  NB. if plain :, nothing to look at
>>       'larg rarg' =. 1{::ar  NB. The args of m : n
>>       if. (<,'0') -.@-: {.larg do. 0 return. end.
>>       if. (<,'0') -.@-: {.rarg do. 0 return. end.  NB. verify m : n
>>       if. -. (1{::larg) e. 1 2 do. 0 return. end.  NB. m is 1 or 2
>>       wds =. ; <@;:"1 ": 1 {:: rarg NB. force to char, break to wirds,
>>    run lines together
>>       NB. old style is (x or y found) and not (uvmn found)
>>       anyxy =. sevlevel +. ((;: 'x y') +./@:e. wds)+. (('__x';'__y')
>>    +./@e. _3&{.&.> wds)
>>       anyuvmn =. ((;:'u v m n u. v.') +./@e. wds) +.
>>    (('__u';'__v';'__m';'__n') +./@e. _3&{.&.> wds)
>>       anyxy *. -. anyuvmn return.
>>    end.
>>    0  NB. If no match, it's OK
>>    )
>> 
>>    NB. check to see if a definition is old-style
>>    NB. Returns 1 if it is
>>    NB. y is boxed name of a modifier
>>    isolddef_z_ =: 4 : 0"0
>>    x isarolddef 5!:1 y
>>    )
>> 
>>    NB. Check all names in the current locale
>>    NB. y is severity level: 0 to return names that are known to be
>>    old-style
>>    NB. 1 to return names that might be old style because they have no
>>    defined references to anything
>>    NB. Ex: olddefs_localename_ 1
>>    olddefs_z_ =: 3 : 0
>>    NB. get names
>>    nms =. nl ''
>>    NB. keep only modifiers
>>    modnms =. (1 2 e.~ 4!:0 nms) # nms
>>    if. 0 =#modnms do. 0$a: return. end.
>>    NB. Return names that are old-style
>>    (#~ y&isolddef) modnms
>>    )
>> 
>>    NB. Check all names in all locales.  y is severity level
>>    allolddefs_z_=: 3 : 0
>>    for_l. 18!:1[i.2 do.
>>    echo^:(0~:#) l,.olddefs__l y
>>    end.
>>    EMPTY
>>    )
>> 
>> I'll probably leave it well alone!
>> 
>> Cheers,
>> 
>> Mike
>> 
>> 
>>> On 22/05/2022 22:45, Henry Rich wrote:
>>> I hope you will go on to find out what is wrong with allolddefs, or at
>>> least post it so we can all see it. I don't remember it.
>>> 
>>> Henry Rich
>>> 
>>> 
>>> 
>>>> On 5/22/2022 5:03 PM, 'Michael Day' via Beta wrote:
>>>> Success?
>>>> 
>>>> I had tried that, initially on Friday,with jconsole.bat but didn't
>>>> see any clues.
>>>> 
>>>> Also,  as I said,  I'd tried commenting out stuff in startup.ijs,
>>>> which also didn't
>>>> apparently change anything.
>>>> 
>>>> Now, however,  I embedded echo statements in startup.ijs  They did
>>>> indeed
>>>> stop appearing before the end of the script.  This suggested that
>>>> checking
>>>> old definitions was at fault;  I rather think Henry must have
>>>> recommended
>>>> or requested we use it.  This is the relevant snippet from startup.ijs:
>>>> 
>>>> load'~user/olddefs.ijs'
>>>> echo LF,'CHECKING OLD DEFINITIONS'
>>>> allolddefs 1
>>>> echo 'startup: have checked old definitions'
>>>> 
>>>> This echo had not appeared in the jconsole/cmd.exe log.
>>>> Commenting out the call to "allolddefs" results in a successful load
>>>> of either
>>>> jconsole or jqt.
>>>> 
>>>> Sorry - I thought I'd already tried disabling this call,  but perhaps
>>>> I'd trusted
>>>> a J-supplied script!
>>>> 
>>>> As it is,  it appears to be unwise to check for "Old Definitions."
>>>> 
>>>> Thanks for all the help,
>>>> 
>>>> Mike
>>>> 
>>>> 
>>>> 
>>>>> On 22/05/2022 21:18, Raul Miller wrote:
>>>>> On Sun, May 22, 2022 at 2:59 PM 'Michael Day' via Beta
>>>>> <[email protected]> wrote:
>>>>>> Starting jconsole with admin privileges briefly shows a window which
>>>>>> then disappears.
>>>>> Try starting it from a command shell
>>>>> 
>>>>> That way, the window will remain and any potential error message
>>>>> should be readable.
>>>>> 
>>>>> Thanks,
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
>> --
>> This email has been checked for viruses by Avast antivirus software.
>> https://www.avast.com/antivirus
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to