Fixed for next beta.  The problem arose when an executable name assigned in an explicit definition was exported from that definition by being assigned to another name.  Example:

verba =: {{
...
name =: <some verb>
expname =: name
...
}} ''

In some such cases, the reference to name would be interpreted as if locally defined.

Workaround: fix the exported value, e. g.  expname =: name f.

Henry Rich

On 7/22/2022 12:52 AM, bill lam wrote:
I tested this is not related to 15!:0 or shared library. Loading the simple
script below with cause segfault.
@Henry, can you take a look?

a1.ijs
NB. ================
lib=. 'foo'

3 : 0''
c=. 'c'
ccdm=: 1 : ('(''"',c,'" '',u)&]')
ncdm=: ccdm
''
)

'' ncdm
NB. ================


On Fri, Jul 22, 2022 at 12:16 PM John Ference <[email protected]>
wrote:

If all the preceding code is run, a repeatable segfault occurs on the line:

gethostbyaddrJ=: 'gethostbyaddr * * i i' ncdm

There are two oddities associated with this behavior:

1) If the liblapack loads are omitted, the segfault does not occur.

2) If the ncdm references are omitted OR defined directly rather than by
reference to ccdm, the segfault does not occur.

On Jul 21, 2022, at 3:29 PM, bill lam <[email protected]> wrote:

At which line did it crash ?

On Fri, Jul 22, 2022, 2:08 AM John Ference <[email protected]>
wrote:
   load jpath '~temp/dllcrash.ijs'

Segmentation fault: 11

logout

Saving session...

...copying shared history...

...saving history...truncating history files...

...completed.


   JVERSION

Engine: j904/j64avx/darwin

Beta-e: commercial/2022-07-16T19:27:13

Library: 9.04.03

Platform: Darwin 64

Installer: J904 install

InstallPath: /applications/j904


=========================================================
dllcrash.ijs

=========================================================
3 : 0''
if. 0=4!:0<'liblapack' do. '' return. end.
if. UNAME-:'Linux' do.
  liblapack=: 'liblapack.so.3'
elseif. UNAME-:'Darwin' do.
  liblapack=:


'/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib'
  if. -.fexist liblapack do.
    liblapack=: '/System/Library/Frameworks/vecLib.framework/vecLib'
  end.
elseif. do.
  liblapack=: DistPath,'/bin/liblapack3.dll'
end.
)

lib=. dquote liblapack
dpotrf=: (lib, ' dpotrf_ ',(IFWIN#'+'),' n *c *i *d *i *i ') & cd
dpptrf=: (lib, ' dpptrf_ ',(IFWIN#'+'),' n *c *i *d *i ') & cd
dsytrf=: (lib, ' dsytrf_ ',(IFWIN#'+'),' n *c *i *d *i *i *d *i *i ') &
cd
dpotrs=: (lib, ' dpotrs_ ',(IFWIN#'+'),' n *c *i *i *d *i *d *i *i ') &
cd
dpptrs=: (lib, ' dpptrs_ ',(IFWIN#'+'),' n *c *i *i *d *d *i *i ') & cd
dsycon=: (lib, ' dsycon_ ',(IFWIN#'+'),' n *c *i *d *i *i *d *d *d *i
*i ')
& cd
dpotri=: (lib, ' dpotri_ ',(IFWIN#'+'),' n *c *i *d *i *i ') & cd
dpptri=: (lib, ' dpptri_ ',(IFWIN#'+'),' n *c *i *d *i ') & cd
dgesvd=: (lib, ' dgesvd_ ',(IFWIN#'+'),' n *c *c *i *i *d *i *d *d *i
*d *i
*d *i *i ') & cd
sgeev=: (lib, ' sgeev_ ',(IFWIN#'+'),' n *c *c *i *f *i *f *f *f *i *f
*i
*f *i *i ') & cd
dgeev=: (lib, ' dgeev_ ',(IFWIN#'+'),' n *c *c *i *d *i *d *d *d *i *d
*i
*d *i *i ') & cd
zgeev=: (lib, ' zgeev_ ',(IFWIN#'+'),' n *c *c *i *j *i *j *j *i *j *i
*j
*i *d *i ') & cd

3 : 0''
select. UNAME
case. 'Win' do.
  c=. >IFWINCE{'wsock32';'winsock'
  ccdm=: 1 : ('(''"',c,,'" '',u)&(15!:0)')
  ncdm=: ccdm
  scdm=: ccdm
  wcdm=: ccdm
  LIB=: ''
  closesocketJ=: 'closesocket i i' scdm
  ioctlsocketJ=: 'ioctlsocket i i i *i' scdm
case. do.
  c=. unxlib 'c'
  ccdm=: 1 : ('(''"',c,'" '',u)&(15!:0)')
  ncdm=: ccdm
  scdm=: ccdm
  wcdm=: 1 : ']'
  LIB=: c
  closesocketJ=: 'close i i' scdm
  ioctlsocketJ=: 'ioctl i i x *i' scdm
end.
empty''
)

gethostbyaddrJ=: 'gethostbyaddr * * i i' ncdm
gethostbynameJ=: 'gethostbyname * *c' ncdm
gethostnameJ=: 'gethostname i *c i' ncdm
inet_addrJ=: 'inet_addr i *c' ncdm
inet_ntoaJ=: 'inet_ntoa i i' ncdmh
----------------------------------------------------------------------
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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


--
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to