ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* LuaTeX: Weird GC behaviour
@ 2017-12-05 21:47 Henri
  2017-12-05 22:32 ` Hans Hagen
  0 siblings, 1 reply; 4+ messages in thread
From: Henri @ 2017-12-05 21:47 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Dear devs,

This was asked on TeX.SX: https://tex.stackexchange.com/questions/404617
The example below runs perfectly fine in the normal Lua interpreter, but crashes in texlua because
the maximum number of open file handles is exceeded.  This seems to be a peculiarity of io.lines in
texlua.  Is there anything special to the implementation of it in LuaTeX?

Cheers, Henri



-- Create the file (once)
local filename = 'luatexfilelimit.txt'
local file = io.open(filename, "w")
file:write("hello world\n")
file:close()

-- Print its contents (many times)
for i = 1, 3000000 do
   print(string.format('Attempt %d', i))
   for line in io.lines(filename) do
      print(line)
   end
end

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: LuaTeX: Weird GC behaviour
  2017-12-05 21:47 LuaTeX: Weird GC behaviour Henri
@ 2017-12-05 22:32 ` Hans Hagen
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2017-12-05 22:32 UTC (permalink / raw)
  To: ntg-context

On 12/5/2017 10:47 PM, Henri wrote:
> Dear devs,
> 
> This was asked on TeX.SX: https://tex.stackexchange.com/questions/404617
> The example below runs perfectly fine in the normal Lua interpreter, but crashes in texlua because
> the maximum number of open file handles is exceeded.  This seems to be a peculiarity of io.lines in
> texlua.  Is there anything special to the implementation of it in LuaTeX?
yes: it's wrapped in code that does some checking wrr to what is permitted

no: lua should collect the open handles but in your example there has 
not been a reason for collecting (hardly a memory demand)

i'll see if i can hack a solution

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: LuaTeX: Weird GC behaviour
  2017-12-06 23:40 Shreevatsa R
@ 2017-12-07 10:52 ` Hans Hagen
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2017-12-07 10:52 UTC (permalink / raw)
  To: ntg-context

On 12/7/2017 12:40 AM, Shreevatsa R wrote:
> (Hope this gets threaded with the previous two messages...)
> 
> I was the one who asked the question
> (https://tex.stackexchange.com/questions/404617). Another thing I'd
> like to mention is that after a while `io.lines` simply returned nil,
> and the second and third return values (error message and error code)
> that io.lines is supposed to return in case of error were also nil.
> Even if this issue is not perfectly fixed (i.e. even if io.lines
> cannot be made to close the file descriptor when it reaches the end of
> file), I think it would be preferable to throw a clear error when
> there's a failure to open a new file, instead of silently (and in a
> not 100% reproducible way) returning nil.
Ok, we can quit with an error but the message will be a bit different 
(as we have different code). The file gets now closed explicitly which 
doesn't guarantee collection but it looks ok so far. I never use 
io.lines so I can't really test in practice.

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: LuaTeX: Weird GC behaviour
@ 2017-12-06 23:40 Shreevatsa R
  2017-12-07 10:52 ` Hans Hagen
  0 siblings, 1 reply; 4+ messages in thread
From: Shreevatsa R @ 2017-12-06 23:40 UTC (permalink / raw)
  To: ntg-context

(Hope this gets threaded with the previous two messages...)

I was the one who asked the question
(https://tex.stackexchange.com/questions/404617). Another thing I'd
like to mention is that after a while `io.lines` simply returned nil,
and the second and third return values (error message and error code)
that io.lines is supposed to return in case of error were also nil.
Even if this issue is not perfectly fixed (i.e. even if io.lines
cannot be made to close the file descriptor when it reaches the end of
file), I think it would be preferable to throw a clear error when
there's a failure to open a new file, instead of silently (and in a
not 100% reproducible way) returning nil.
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-12-07 10:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-05 21:47 LuaTeX: Weird GC behaviour Henri
2017-12-05 22:32 ` Hans Hagen
2017-12-06 23:40 Shreevatsa R
2017-12-07 10:52 ` Hans Hagen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).