Newbie questions about Pliant

Newbie questions about Pliant

crash

strange crash
Message posted by maybe Boris Reitman on 2007/05/03 00:16:07
This the error message:
========================
actions stack is:
site 'basic.broadwayflorists.com' user 'broadwayflorists' command GET /ordercatalogu
e/show_orders.html?button*0*0*/sites/broadwayflorists.com/ordercatalogue/show_orders
.page/20070326033855/23*cO2yAVoFXCDLev0wIobrmW9i.g*NKX41zw_Fg5EMxghgHk22g HTTP/1.1
service HTTP request from 69.72.214.226
----------------------------------------------------------------
processor stack content is:
??? at -1208843233
deflateInit2_ (z_stream_s Int Int Int Int Int CStr Int) +1269
deflateInit2_ (z_stream_s Int Int Int Int Int CStr Int) +604
deflateInit2  /pliant/language/stream/zlib.pli (internals) 65 3 /pliant/language/stream/zlib.pli (internals) 67 12
. open  /pliant/language/stream/zlib.pli (internals) 360 1 /pliant/language/stream/zlib.pli (internals) 395 11
. open  /pliant/language/stream/multi.pli (internals) 163 1 /pliant/language/stream/multi.pli (internals) 176 16
. open  /pliant/language/stream/stream.pli (internals) 436 1 /pliant/language/stream/stream.pli (internals) 444 13
. send_header  /pliant/protocol/http/server.pli (internals) 633 1 /pliant/protocol/http/server.pli (internals) 664 5
. send_dynamic_file  /pliant/protocol/http/server.pli (internals) 1051 1 /pliant/protocol/http/server.pli (internals) 1092 5
. send_dynamic_answer  /pliant/protocol/http/server.pli (internals) 1159 1 /pliant/protocol/http/server.pli (internals) 1164 9
. parse_then_answer  /pliant/protocol/http/server.pli (internals) 1272 1 /pliant/protocol/http/server.pli (internals) 1430 11
. service  /pliant/protocol/http/server.pli (internals) 1576 1 /pliant/protocol/http/server.pli (internals) 1604 5
frozen expression at /pliant/protocol/common/tcp_server.pli (internals) 125 1  /pliant/protocol/common/tcp_server.pli (internals) 125 1 /pliant/protocol/common/tcp_server.pli (internals) 126 1
run_thread  /pliant/language/schedule/threads_engine.pli (internals) 330 5 /pliant/language/schedule/threads_engine.pli (internals) 370 9
===============

is the crash in my code ?
Message posted by maybe Hubert Tonneau on 2007/05/03 02:34:11
I bet not.

I've seen that from time to time.
My bet, also I might be wrong, is that if Pliant creates too many threads,
zlib will be disturbed at some point, so it might be that zlib dies before
Pliant do, but Pliant would probably die also at a later point.
Anyway, since I don't like not beeing abble to properly debug, I've planned to
write a Pliant zlib port, but never finished it (decompression is available in
/pliant/util/encoding/zlib.pli).
Message posted by maybe Boris Reitman on 2007/05/05 17:46:26
Another crash:
==========8<================
site 'basic.broadwayflorists.com' user 'broadwayflorists' command GET /ordercatalogue/prices.html?button*0*0*/sites/broadwayflorists.com/ordercatalogue/prices.page/20070503230930/4*iRbI68i3XTVPQR9UHB21kG9i.g*sem6QykImQ7QuKqcztSNhg HTTP/1.1
service HTTP request from 69.72.214.226
----------------------------------------------------------------
processor stack content is
compare (Str Str) +12
find_items_by_admin_query  /sites/broadwayflorists/prices.pli (internals) 20 1 /sites/broadwayflorists/prices.pli (internals) 25 15
. show_prices  /sites/broadwayflorists.com/ordercatalogue/prices.page 127 1 /sites/broadwayflorists.com/ordercatalogue/prices.page 131 26
frozen expression at /sites/broadwayflorists.com/ordercatalogue/prices.page 163 65533  /sites/broadwayflorists.com/ordercatalogue/prices.page 163 65533 /sites/broadwayflorists.com/ordercatalogue/prices.page 163 7
. send_dynamic_file  /pliant/protocol/http/server.pli (internals) 1051 1 /pliant/pro
tocol/http/server.pli (internals) 1147 9
. send_dynamic_answer  /pliant/protocol/http/server.pli (internals) 1159 1 /pliant/p
rotocol/http/server.pli (internals) 1164 9
. parse_then_answer  /pliant/protocol/http/server.pli (internals) 1272 1 /pliant/pro
tocol/http/server.pli (internals) 1430 11
. service  /pliant/protocol/http/server.pli (internals) 1576 1 /pliant/protocol/http
/server.pli (internals) 1604 5
frozen expression at /pliant/protocol/common/tcp_server.pli (internals) 125 1  /plia
nt/protocol/common/tcp_server.pli (internals) 125 1 /pliant/protocol/common/tcp_serv
er.pli (internals) 126 1
run_thread  /pliant/language/schedule/threads_engine.pli (internals) 330 5 /pliant/l
anguage/schedule/threads_engine.pli (internals) 385 13
----------------------------------------------------------------
============>8====================================

The code at price.pli at linke 25 looks like this:

     20 function find_items_by_admin_query query -> items
     21   arg Str query ; arg Array:Str items
     22   items := (var Array:Str dummy)
     23   items size := 0 
     24   var Array:Str tokens := query hungry_split_to_array ":"
     25   if tokens:0 = "SINGLE" 
     26     var Str search_item := tokens:1
     27     if not (exists flower_database:data:(upper:search_item))
     28       search_item := search_item 1 search_item:len-1
     29       if (exists flower_database:data:(upper:search_item))
     30         items += search_item

I use this hungry_split_to_array and (var Array:Str tokens) a lot.
Is pliant crashing because it is trying to reuse temporary variables ? 

Here the code for hungry_split_to_array:

  http://archimedes.hypervolume.com/~boris/pliant/string.pli

Thanks,
Boris
Message posted by maybe Hubert Tonneau on 2007/05/05 18:39:31
This one looks simple: your 'tokens' array is empty, so your 'tokens:0' code
is boggus.
Message posted by maybe Boris Reitman on 2007/05/05 19:52:50
Thanks ! :)