pike issueshttps://git.lysator.liu.se/pikelang/pike/-/issues2020-03-05T17:23:49Zhttps://git.lysator.liu.se/pikelang/pike/-/issues/8065register_path() doesn't reschedule the backend_check() call_out.2020-03-05T17:23:49ZPeter Bortasregister_path() doesn't reschedule the backend_check() call_out.Imported from https://youtrack.roxen.com/issue/PIKE-65
Reported by @grubba
If the newly added monitor ends up at the head of the `monitor_queue`, the `backend_check()` call_out likely needs to be rescheduled.Imported from https://youtrack.roxen.com/issue/PIKE-65
Reported by @grubba
If the newly added monitor ends up at the head of the `monitor_queue`, the `backend_check()` call_out likely needs to be rescheduled.https://git.lysator.liu.se/pikelang/pike/-/issues/8072Nettle warning2020-03-05T17:25:40ZPeter BortasNettle warningImported from https://youtrack.roxen.com/issue/PIKE-72
Reported by Marcus Wellhardh <wellhard@roxen.com>
Latest build 6.2.84 gives the following warning:
```
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:446: Warning: Not a va...Imported from https://youtrack.roxen.com/issue/PIKE-72
Reported by Marcus Wellhardh <wellhard@roxen.com>
Latest build 6.2.84 gives the following warning:
```
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:446: Warning: Not a valid object type.
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:446: Warning: Expected: function(void | mixed ... : object) | object | program.
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:446: Warning: Got : mixed.
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:532: Warning: Invalid type.
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:532: Warning: Expected: function(void | mixed ... : object) | object | program | type(mixed).
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:532: Warning: Got : mixed.
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:593: Warning: Invalid type.
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:593: Warning: Expected: function(void | mixed ... : object) | object | program | type(mixed).
pike/lib/modules/__builtin.pmod/Nettle.pmod/Hash.pike:593: Warning: Got : mixed.
```https://git.lysator.liu.se/pikelang/pike/-/issues/8063Thread.Thread->id_number() sometimes returns same value for different threads2020-03-05T17:26:11ZPeter BortasThread.Thread->id_number() sometimes returns same value for different threadsImported from https://youtrack.roxen.com/issue/PIKE-63
Reported by KG Sterneberg <kg@roxen.com>
Encountered this problem when writing and running tests for the new Edition Purger.
Tried to reproduce the problem in an isolated test but ...Imported from https://youtrack.roxen.com/issue/PIKE-63
Reported by KG Sterneberg <kg@roxen.com>
Encountered this problem when writing and running tests for the new Edition Purger.
Tried to reproduce the problem in an isolated test but failed.
In order to reproduce, checkout branch kg/PIKE-X-thread-id-number-issue in Print and Roxen repos. Then run the the PurgerTest by executing:
`TEST_SUITE=PurgerTest ./start --self-test --tests=rep_archive -DARCHIVE_DEBUG`
NB: You need to have Elasticsearch installed and configured on localhost:9200 and test-indices created. Go to the directory `scripts` in the Archive repo and execute `sh create_indices.sh test` (NB: You must stand in directory 'scripts').
In the debug-log you will see stuff like this:
TRACE: Clearing cache. thread id: 140735632249664, Thread: Thread.Thread(0x70000c65a000)
TRACE: Clearing cache. thread id: 140735632249664, Thread: Thread.Thread(0x70000c14b000)
TRACE: Clearing cache. thread id: 140735632249664, Thread: Thread.Thread(0x70000c351000)
TRACE: Clearing cache. thread id: 140735632249664, Thread: Thread.Thread(0x70000c24e000)https://git.lysator.liu.se/pikelang/pike/-/issues/8062Locking of mutexes while threads disabled.2020-03-05T17:26:59ZPeter BortasLocking of mutexes while threads disabled.Imported from https://youtrack.roxen.com/issue/PIKE-62
Reported by @grubba
Blocked by [PIKE-78](#8078)
Attempting to lock mutexes (like lock_compiler()) ought to throw errors when threads are disabled.Imported from https://youtrack.roxen.com/issue/PIKE-62
Reported by @grubba
Blocked by [PIKE-78](#8078)
Attempting to lock mutexes (like lock_compiler()) ought to throw errors when threads are disabled.https://git.lysator.liu.se/pikelang/pike/-/issues/8079Unicode.normalize() in NFC mode is a noop for narrow strings.2020-03-05T17:27:31ZPeter BortasUnicode.normalize() in NFC mode is a noop for narrow strings.Imported from https://youtrack.roxen.com/issue/PIKE-79
Reported by @grubba
Optimize the case where `Unicode.normalize()` is called in *NFC* mode on an 8-bit string.Imported from https://youtrack.roxen.com/issue/PIKE-79
Reported by @grubba
Optimize the case where `Unicode.normalize()` is called in *NFC* mode on an 8-bit string.https://git.lysator.liu.se/pikelang/pike/-/issues/8084destroy() in Protocols.HTTP.Query causes ABS restart.2020-03-05T17:28:51ZPeter Bortasdestroy() in Protocols.HTTP.Query causes ABS restart.Imported from https://youtrack.roxen.com/issue/PIKE-84
Reported by Marcus Wellhardh <wellhard@roxen.com>
A production CMS is restarted about once a day caused by a blocked backend thread. The entire debug log is attached. The ABS tread...Imported from https://youtrack.roxen.com/issue/PIKE-84
Reported by Marcus Wellhardh <wellhard@roxen.com>
A production CMS is restarted about once a day caused by a blocked backend thread. The entire debug log is attached. The ABS tread dump contains the following interesting parts, the rest of the threads are idle:
```
3:15:33 : Pike version: Pike v8.0 release 482
3:15:33 : Product version: Roxen CMS 6.1.224-r3
3:15:33 0m 0.0s : Operating system: Linux 2.6.32-642.11.1.el6.x86_64 (x86_64)
3:15:33 : Starting MySQL ... Was running 10.1.12-MariaDB [6.9ms]
[...]
3:15:33 : 2018-01-26T144820
[...]
21:38:34 : **** Tue Mar 27 21:38:34 2018: ABS engaged!
21:38:34 1d19h38m : Waited more than 10 minute(s).
21:38:34 :
21:38:34 : Trying to dump backlog:
21:38:34 : ###### Describing all 80 pike threads:
21:38:34 : >>
21:38:34 1d19h38m : >> ### Thread 0x7f8c6bf10700 - Backend - busy for 611.284s:
21:38:34 : >> -:1: Thread.Thread(0x7f8c6bf10700)->backtrace()
21:38:34 : >> base_server/roxen.pike (6a418c49):6098: roxen()->describe_thread(Thread.Thread(0x7f8c6bf10700))
21:38:34 : >> base_server/roxen.pike (6a418c49):6152: roxen()->describe_all_threads(UNDEFINED,UNDEFINED)
21:38:34 : >> base_server/roxen.pike (6a418c49):3667: roxen()->engage_abs(14)
21:38:34 1d19h38m : >> -:1: Pike.Backend(26958)->`()(0)
21:38:34 : >> pike/lib/modules/SSL.pmod/File.pike:284: SSL.File(Stdio.File("socket", "31.13.69.228:443", 777 /* fd=119 */), SSL.ClientConnection(local_closed))->backend_once(0)
21:38:34 : >> pike/lib/modules/SSL.pmod/File.pike:1963: SSL.File(Stdio.File("socket", "31.13.69.228:443", 777 /* fd=119 */), SSL.ClientConnection(local_closed))->direct_write()
21:38:34 : >> pike/lib/modules/SSL.pmod/File.pike:678: SSL.File(Stdio.File("socket", "31.13.69.228:443", 777 /* fd=119 */), SSL.ClientConnection(local_closed))->close(UNDEFINED,UNDEFINED,UNDEFINED)
21:38:34 : >> pike/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike:187: Protocols.HTTP.Query(404 Not Found)->close_connection()
21:38:34 1d19h38m : >> pike/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike:1234: Protocols.HTTP.Query(404 Not Found)->close()
21:38:34 : >> pike/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike:1227: Protocols.HTTP.Query(404 Not Found)->destroy()
21:38:34 : >> base_server/roxenloader.pike (06a2c389):254: Protocols.HTTP.Query(301 Moved Permanently)->clean_async_dns->`()()
21:38:34 : >> -:1: Pike.Backend(0)->`()(3600.0)
21:38:34 : >>
```
#### Attachments:
- [default.3](/uploads/102d7a1db3dbfce82291d536e6442d9f/default.3 "default.3")https://git.lysator.liu.se/pikelang/pike/-/issues/8096Pike file name APIs are inconsistent on NT.2020-03-05T17:31:30ZPeter BortasPike file name APIs are inconsistent on NT.Imported from https://youtrack.roxen.com/issue/PIKE-96
Reported by @grubba
On POSIX systems file names are encoded with UTF-8.
On NT on the other hand a mix of Latin-1 and UTF-16 is used.
Change the APIs on NT to also use UTF-8 consi...Imported from https://youtrack.roxen.com/issue/PIKE-96
Reported by @grubba
On POSIX systems file names are encoded with UTF-8.
On NT on the other hand a mix of Latin-1 and UTF-16 is used.
Change the APIs on NT to also use UTF-8 consistently.https://git.lysator.liu.se/pikelang/pike/-/issues/8106f_identify_cycle doesn't unlock mutex on Pike errors2020-03-05T17:34:09ZPeter Bortasf_identify_cycle doesn't unlock mutex on Pike errorsImported from https://youtrack.roxen.com/issue/PIKE-106
Reported by Martin Karlgren <marty@roxen.com>
f_identify_cycle may lock up the memory counting subsystem if something throws a Pike error. It should catch errors and call `stop_mc...Imported from https://youtrack.roxen.com/issue/PIKE-106
Reported by Martin Karlgren <marty@roxen.com>
f_identify_cycle may lock up the memory counting subsystem if something throws a Pike error. It should catch errors and call `stop_mc()` if an error is caught.
In the below backtrace, which is the last one before all threads locked up (supposedly blocked on the mutex in `f_count_memory`), it seems a `==` lfun (called by low_mapping_insert?) threw an error.
```Cannot access variables in destructed object.
base_server/roxenloader.pike (ba0b2444):251: unknown function(RequestID())
-:1: __builtin.identify_cycle(RoxenModule(EP/insite_editor#0)->__lambda_68129_4_line_867)
base_server/roxen.pike (bfa473be):6427: roxen()->__lambda_66524_9_line_6414(@0=RoxenModule(EP/insite_editor#0)->__lambda_68129_4_line_867)
protocols/http.pike (231cb622):3995: RequestID()->__INIT()
protocols/http.pike (231cb622):3862: RequestID(/actions/poll?timeout=-1&interval=0&tag=919&rep_session_id=24976743-AEC7-45F6-AF6B-A1CD8DD81B60&rep_session_ttl=180&rnd=1526404283761)->clone_me()
packages/print/pike-modules/REP.pmod/ClientSession.pike (b070dcd2):1000: Subscription("35DEBFCF-4F5C-4E1E-9A43-5B4D56118AA0", "get-story-item")->low_call_cb(REP.SIVersion(3437224, SI 1249784))
packages/print/pike-modules/REP.pmod/Notification.pmod/Client.pmod (123df0e8):112: Client.NotificationQueue(1008)->notification_thread()```https://git.lysator.liu.se/pikelang/pike/-/issues/8120RACE: call_with_interpreter() can lose track of the Pike_interpreter_pointer.2020-03-05T17:37:35ZPeter BortasRACE: call_with_interpreter() can lose track of the Pike_interpreter_pointer.Imported from https://youtrack.roxen.com/issue/PIKE-120
Reported by @grubba
`call_with_interpreter()` clears `Pike_interpreter_pointer` without holding the interpreter lock.
This may cause other threads to lose their interpreter state...Imported from https://youtrack.roxen.com/issue/PIKE-120
Reported by @grubba
`call_with_interpreter()` clears `Pike_interpreter_pointer` without holding the interpreter lock.
This may cause other threads to lose their interpreter state.
Note that this is only an issue with pike binaries compiled {{--with-debug}}.https://git.lysator.liu.se/pikelang/pike/-/issues/8122Inconsistent visibility for symbol low_clone() in Parser.XML.Tree.*Node.2020-03-05T17:38:07ZPeter BortasInconsistent visibility for symbol low_clone() in Parser.XML.Tree.*Node.Imported from https://youtrack.roxen.com/issue/PIKE-122
Reported by @grubba
The function `low_clone()` is declared visible in `AbstractSimpleNode`, `AbstractNode` and `SimpleNode`, but declared `protected` in most other {*Node}} classe...Imported from https://youtrack.roxen.com/issue/PIKE-122
Reported by @grubba
The function `low_clone()` is declared visible in `AbstractSimpleNode`, `AbstractNode` and `SimpleNode`, but declared `protected` in most other {*Node}} classes. This causes type-checking errors in `strict_types`.https://git.lysator.liu.se/pikelang/pike/-/issues/8124<= on functions doesn't behave as expected.2020-03-05T17:38:38ZPeter Bortas<= on functions doesn't behave as expected.Imported from https://youtrack.roxen.com/issue/PIKE-124
Reported by @grubba
```
Pike v8.0 release 622 running Hilfe 3.5 (Incremental Pike Frontend)
> Parser.XML.Tree.AttributeNode <= Parser.XML.Tree.Node;
(1) Result: 1
> ((program)Pars...Imported from https://youtrack.roxen.com/issue/PIKE-124
Reported by @grubba
```
Pike v8.0 release 622 running Hilfe 3.5 (Incremental Pike Frontend)
> Parser.XML.Tree.AttributeNode <= Parser.XML.Tree.Node;
(1) Result: 1
> ((program)Parser.XML.Tree.AttributeNode) <= ((program)Parser.XML.Tree.Node);
(2) Result: 0
```https://git.lysator.liu.se/pikelang/pike/-/issues/8129Fix Stdio.UDP()->wait() on NT.2020-03-05T17:39:58ZPeter BortasFix Stdio.UDP()->wait() on NT.Imported from https://youtrack.roxen.com/issue/PIKE-129
Reported by @grubba
The implementation of `Stdio.UDP()->wait()` on NT usually fails with `WSAENOTSOCK`.Imported from https://youtrack.roxen.com/issue/PIKE-129
Reported by @grubba
The implementation of `Stdio.UDP()->wait()` on NT usually fails with `WSAENOTSOCK`.https://git.lysator.liu.se/pikelang/pike/-/issues/8141Backtrace formatting forgetting to define @12020-03-05T17:43:12ZPeter BortasBacktrace formatting forgetting to define @1Imported from https://youtrack.roxen.com/issue/PIKE-141
Reported by Jonas Walldén <jonasw@roxen.com>
I got a backtrace in 6.2.202 referencing `@1` in different frames, but there was not any `@1=...` entry that defines the shared item.
...Imported from https://youtrack.roxen.com/issue/PIKE-141
Reported by Jonas Walldén <jonasw@roxen.com>
I got a backtrace in 6.2.202 referencing `@1` in different frames, but there was not any `@1=...` entry that defines the shared item.
```
12:56:46 6d 2h 5m : Internal server error: Cannot index the NULL value with "site".
12:56:46 : packages/sitebuilder/modules/ac/acauth_jwt.pike (a0b9c1c2):434: RoxenModule(EP/acauth_jwt#0)->set_entities(Context())
12:56:46 : etc/modules/RXML.pmod/module.pmod (b3546505):1202: RXMLTagSet(EP,rxml_tag_set)->call_prepare_funs(@0=Context())
12:56:46 : etc/modules/RXML.pmod/module.pmod (b3546505):1040: RXMLTagSet(EP,rxml_tag_set)->new_context(,,,0)
12:56:46 : etc/modules/RXML.pmod/module.pmod (b3546505):1053: RXMLTagSet(EP,rxml_tag_set)->get_parser(RXML.t_html(text/html, xml),,,1)
12:56:46 6d 2h 5m : base_server/rxml.pike (fdac9c13):259: Configuration(EP)->parse_rxml("<return code='401' /><nooutput><emit source=values scope=ef variable='modvar.site.401-files'>\n <if not='' variable='ef.value is '>\n "+[466]+"modvar.site.401-message:none;</eval></else>",@1,0,UNDEFINED)
12:56:46 : etc/modules/Roxen.pmod (82018255):747: Roxen.http_rxml_answer("<return code='401' /><nooutput><emit source=values scope=ef variable='modvar.site.401-files'>\n <if not='' variable='ef.value is '>\n "+[468]+"modvar.site.401-message:none;</eval></else>",@1,0,"text/html")
12:56:46 : base_server/configuration.pike (75b20724):3077: Configuration(EP)->auth_failed_file(@1,UNDEFINED)
12:56:46 : etc/modules/Roxen.pmod (82018255):1587: Roxen.http_auth_required("Platform",UNDEFINED,@1)
12:56:46 : packages/sitebuilder/modules/ac/acauth_httpbasic.pike (9f04e4fc):299: RoxenModule(EP/acauth_httpbasic#0)->active_auth(ProtPoint[38](RoxenModule(EP/sitebuilder#0), "file:/roxen-files/print/external-plugins/drpublish"),@1,"Platform",UNDEFINED)
12:56:46 6d 2h 5m : packages/sitebuilder/modules/ac/pike-modules/AC.pmod (d6ee5e8e):8165: AC_DB[3:89]->active_auth(@2=ProtPoint[38](RoxenModule(EP/sitebuilder#0), "file:/roxen-files/print/external-plugins/drpublish"),@1,UNDEFINED,"Platform",0)
12:56:46 : packages/sitebuilder/modules/ac/pike-modules/AC.pmod (d6ee5e8e):6454: ModuleAC(RoxenModule(EP/sitebuilder#0))->access_throw(38,@1,UNDEFINED,UNDEFINED)
12:56:46 : packages/sitebuilder/pike-modules/Sitebuilder.pmod/Workarea.pike (7fd66d22):2820: Workarea(EP:)->access_throw(@1,UNDEFINED)
12:56:46 : packages/sitebuilder/pike-modules/Sitebuilder.pmod/Workarea.pike (7fd66d22):4971: Workarea(EP:)->wa_find_file("roxen-files/print/external-plugins/drpublish/",0,1,RoxenModule(EP/insite_editor#0),@1,0)
12:56:46 : packages/sitebuilder/modules/manager/workarea.pike (993e1caf):1090: RoxenModule(EP/insite_editor#0)->find_file("roxen-files/print/external-plugins/drpublish/",@1)
12:56:46 6d 2h 5m : packages/sitebuilder/modules/manager/insite_editor.pike (90e8cd20):1381: RoxenModule(EP/insite_editor#0)->find_file("roxen-files/print/external-plugins/drpublish/",@1)
12:56:46 : base_server/configuration.pike (75b20724):2499: Configuration(EP)->low_get_file(@1,UNDEFINED)
12:56:46 : base_server/configuration.pike (75b20724):2763: Configuration(EP)->get_file(@1,UNDEFINED,UNDEFINED)
12:56:46 : base_server/configuration.pike (75b20724):2738: Configuration(EP)->handle_request(@1,UNDEFINED)
12:56:46 : protocols/http.pike (bda6e7bd):3322: RequestID(/roxen-files/print/external-plugins/drpublish/?language=en&skin=light&publicationId=3&publicationName=NTB&app=pp-preview&title=Paper%20Preview&url=https%3A%2F%2Fep-test-2.roxen.com%2Froxen-files%2Fprint%2Fexternal-plugins%2Fdrpublish%2F&required=false&configUrl=&config=false&hidden=false&authMethod=JWT&hasJwtSecret=true&publicationAccesslevel=&isAuth=true&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcHRvbWEiLCJpYXQiOjE1NDAzNzg2MDYsImV4cCI6MTU0MDQwNzQwNiwic3ViIjoicm94ZW4ifQ.HI882tsxgfbZGCeQcyqhLwlWyWit733VxKpTGpuJkjo&appName=pp-preview&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcHRvbWEiLCJpYXQiOjE1NDAzNzg2MDYsImV4cCI6MTU0MDQwNzQwNiwic3ViIjoicm94ZW4ifQ.HI882tsxgfbZGCeQcyqhLwlWyWit733VxKpTGpuJkjo&permissionLevel=limited)->handle_request()
12:56:46 6d 2h 5m : protocols/http.pike (bda6e7bd):3214: RequestID(/roxen-files/print/external-plugins/drpublish/?language=en&skin=light&publicationId=3&publicationName=NTB&app=pp-preview&title=Paper%20Preview&url=https%3A%2F%2Fep-test-2.roxen.com%2Froxen-files%2Fprint%2Fexternal-plugins%2Fdrpublish%2F&required=false&configUrl=&config=false&hidden=false&authMethod=JWT&hasJwtSecret=true&publicationAccesslevel=&isAuth=true&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcHRvbWEiLCJpYXQiOjE1NDAzNzg2MDYsImV4cCI6MTU0MDQwNzQwNiwic3ViIjoicm94ZW4ifQ.HI882tsxgfbZGCeQcyqhLwlWyWit733VxKpTGpuJkjo&appName=pp-preview&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcHRvbWEiLCJpYXQiOjE1NDAzNzg2MDYsImV4cCI6MTU0MDQwNzQwNiwic3ViIjoicm94ZW4ifQ.HI882tsxgfbZGCeQcyqhLwlWyWit733VxKpTGpuJkjo&permissionLevel=limited)->handle_request_from_queue()
12:56:46 : base_server/roxen.pike (b33c7b81):763: roxen()->handler_thread(6)
```https://git.lysator.liu.se/pikelang/pike/-/issues/8144The ioctl interface to /proc has been obsolete since 1997. Remove it.2020-03-05T17:44:00ZPeter BortasThe ioctl interface to /proc has been obsolete since 1997. Remove it.Imported from https://youtrack.roxen.com/issue/PIKE-144
Reported by @grubba
The interface is no longer supported in recent versions of Solaris.Imported from https://youtrack.roxen.com/issue/PIKE-144
Reported by @grubba
The interface is no longer supported in recent versions of Solaris.https://git.lysator.liu.se/pikelang/pike/-/issues/8156Hide mutex keys and similar from backtraces2020-03-05T17:47:09ZPeter BortasHide mutex keys and similar from backtracesImported from https://youtrack.roxen.com/issue/PIKE-156
Reported by @grubba
Related to [PIKE-157](#8157)Imported from https://youtrack.roxen.com/issue/PIKE-156
Reported by @grubba
Related to [PIKE-157](#8157)https://git.lysator.liu.se/pikelang/pike/-/issues/8157Work-around: Adjust Thread.Queue to survive extra refs to mutex keys2020-03-05T17:47:25ZPeter BortasWork-around: Adjust Thread.Queue to survive extra refs to mutex keysImported from https://youtrack.roxen.com/issue/PIKE-157
Reported by @grubba
Related to [PIKE-156](#8156)Imported from https://youtrack.roxen.com/issue/PIKE-157
Reported by @grubba
Related to [PIKE-156](#8156)https://git.lysator.liu.se/pikelang/pike/-/issues/8160Improve Pike-level Concurrent.Promise APIs2020-03-05T17:47:57ZPeter BortasImprove Pike-level Concurrent.Promise APIsImported from https://youtrack.roxen.com/issue/PIKE-160
Reported by @grubbaImported from https://youtrack.roxen.com/issue/PIKE-160
Reported by @grubbahttps://git.lysator.liu.se/pikelang/pike/-/issues/8163Propagate backend setting for Promises.2020-03-05T17:48:47ZPeter BortasPropagate backend setting for Promises.Imported from https://youtrack.roxen.com/issue/PIKE-163
Reported by @grubbaImported from https://youtrack.roxen.com/issue/PIKE-163
Reported by @grubbahttps://git.lysator.liu.se/pikelang/pike/-/issues/8166Global on_failure callback is called too early.2020-03-05T17:49:36ZPeter BortasGlobal on_failure callback is called too early.Imported from https://youtrack.roxen.com/issue/PIKE-166
Reported by @grubba
The callback installed via `Concurrent.on_failure()` may get called before the user has had a chance at installing custom failure callbacks.
Defer the call un...Imported from https://youtrack.roxen.com/issue/PIKE-166
Reported by @grubba
The callback installed via `Concurrent.on_failure()` may get called before the user has had a chance at installing custom failure callbacks.
Defer the call until the `Promise` is destructed.https://git.lysator.liu.se/pikelang/pike/-/issues/8174Fix expert system in Calendar module.2020-03-05T17:51:48ZPeter BortasFix expert system in Calendar module.Imported from https://youtrack.roxen.com/issue/PIKE-174
Reported by @grubbaImported from https://youtrack.roxen.com/issue/PIKE-174
Reported by @grubba