[perl #129227] [SEGV] Concatenation of a large number of combining characters

2016-09-08 Thread via RT
# New Ticket Created by  Zoffix Znet 
# Please include the string:  [perl #129227]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=129227 >



 m:  7 ~ "\x[308]" x 100_000
 rakudo-moar 7925d6: OUTPUT«WARNINGS for :␤Useless use of "~" in 
expression "7 ~ \"\\x[308]\" x" in sink context (line 1)␤»
 m:  7 ~ "\x[308]" x 150_000
 rakudo-moar 7925d6: OUTPUT«(signal SEGV)»


[perl #129221] [BUG][UNI] Combinators get matched by regex even when no ignoremark is set

2016-09-08 Thread Zoffix Znet via RT
Not a bug.

See also http://irclog.perlgeek.de/perl6-dev/2016-09-08#i_13170729


[perl #128545] [LTA] [UNI] Date.new(Str) poor error message for digit with diacritic

2016-09-08 Thread Zoffix Znet via RT
Thanks for the report.

Fixed in https://github.com/rakudo/rakudo/commit/a2b6f74be1
Tests added in https://github.com/perl6/roast/commit/3ed2af4c42


[perl #128862] [CONC] IO::Socket::Async server throws uncatchable exception in case of encoding errors

2016-09-08 Thread jn...@jnthn.net via RT
On Sat Aug 06 11:25:38 2016, sml...@gmail.com wrote:
> Golfed program to demonstrate the problem:
> 
> my $server = IO::Socket::Async.listen('localhost', );
> $server.tap: -> $conn {
> $conn.Supply.tap: -> $message { say $message.perl }
> }
> 
> my $client = IO::Socket::Async.connect('localhost', ).then: {
> .result.write(Blob.new: 144);
> }
> 
> await $client, $server;
> 
> It prints the following, and exits:
> 
> Unhandled exception: Malformed UTF-8
> 
> In practice, having a server than can be crashed at will by any (even
> not-authenticated) client is of course LTA.
> It seem the only way to prevent this, is to use .Supply(:bin) to work
> with Buf's, which is needlessly cumbersome for text-based protocols.
> 
> I tried to catch the exception in the following ways, to prevent it
> from exiting the program, but none had an effect:
> 
> 1) CATCH or try/CATCH in a bunch of different places
> 2) Assigning to $*SCHEDULER.uncaught_handler
> 3) Specifying a :quit handler for both .tap's

Fixed, and test added in S32-io/IO-Socket-Async.t for this and a couple of 
other related cases. (Under the hood, the whole way we handle decoding strings 
with async sockets has been given a good overhaul.)

The typical way to handle such errors would be your option 3 (or, if using the 
supply/whenever syntax, a QUIT phaser). It should now also, as a last gasp, be 
passed to option 2.

/jnthn



[perl #129228] [SEGV] concurrent network access segfaults in libmoar.so

2016-09-08 Thread Zoffix Znet via RT
I'm unable to reproduce this on HEAD Rakudo even with $n set to 40 and 
RAKUDO_MAX_THREADS set to 50.

What is your perl6 version (perl6 -v). Are you able to try this against HEAD 
[^1]? Yesterday a fix went in addressing issues in sockets and threads; and 
recently there have been many other async fixes.


[1] Steps to build:
cd $(mktemp -d) &&
git clone https://github.com/rakudo/rakudo/ . &&
perl Configure.pl --gen-moar --gen-nqp --backends=moar &&
make &&
make install;
./perl6-m your-script.p6



[perl #129234] [CONC] `.hyper` and `.race` resume after exceptions

2016-09-08 Thread via RT
# New Ticket Created by  Sam S. 
# Please include the string:  [perl #129234]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=129234 >


If you `die` inside a `map/for` that is being `hyper/race`d...

for (1..1).hyper { die };  sleep 1;  say "Alive";

...it prints the exception's backtrace, but then resumes the program as if 
nothing had happened:

Died
  in block  at -e line 1

Alive



[perl #128123] [JVM] failing test in S03-metaops/hyper.t after change from postfix:<++> to prefix:<++>

2016-09-08 Thread Christian Bartolomaeus via RT
And now a lot of tests from roast exploded with "Expected a native int argument 
for '$a'" after this commit introduced two uses of postfix:<++> and 
postfix:<--> in lib/Test.pm6: 
https://github.com/rakudo/rakudo/commit/ffb5789f7eef1157c7556897c4805569df4f7aa4

Modifying the two relevant lines seems to fix those failures (did not run full 
spectest yet):

diff --git a/lib/Test.pm6 b/lib/Test.pm6
index 45bb86f..5d052e9 100644
--- a/lib/Test.pm6
+++ b/lib/Test.pm6
@@ -339,9 +339,9 @@ multi sub subtest(&subtests, $desc = '') is export {
 _push_vars();
 _init_vars();
 $indents ~= "";
-$subtest_level++;
+$subtest_level += 1;
 subtests();
-$subtest_level--;
+$subtest_level -= 1;
 done-testing() if nqp::iseq_i($done_testing_has_been_run,0);
 my $status =
   $num_of_tests_failed == 0 && $num_of_tests_planned == $num_of_tests_run;


[perl #129228] [SEGV] concurrent network access segfaults in libmoar.so

2016-09-08 Thread via RT
# New Ticket Created by  Robert Lemmen 
# Please include the string:  [perl #129228]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/Ticket/Display.html?id=129228 >


this simple program:

---8<---

use v6;

use HTTP::Client;

my $n = 4;

my @promises;
for 1..$n {
push @promises, start {
my $i = 0;
# when increasing n above, the total runtime changes as expected
#for 1..(5/$n) {
#say $*THREAD.id;
#sleep 1;
#}
# funkyly, it increases dramatically from n=1 to n=2 , and then
# stays there for n=3 and n=4
my $client = HTTP::Client.new;
for 1..100 {
say sprintf("%2i %2i", $*THREAD.id,  $i++) ~ ' ' ~ now;
for 1..(100/$n) {
   my $response = $client.get('http://localhost:80/');
   }
}
}
}
await Promise.allof(@promises)
--->8---

segfaults for me every now and then if n>=2. core dumps show:

Program terminated with signal SIGABRT, Aborted.
#0  0x7fa0e1435067 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
56  ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  0x7fa0e1435067 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x7fa0e1436448 in __GI_abort () at abort.c:89
#2  0x7fa0e14731b4 in __libc_message (do_abort=do_abort@entry=1, 
fmt=fmt@entry=0x7fa0e1568530 "*** Error in `%s': %s: 0x%s ***\n")
at ../sysdeps/posix/libc_fatal.c:175
#3  0x7fa0e147898e in malloc_printerr (action=1, str=0x7fa0e1568718 "double 
free or corruption (fasttop)", ptr=)
at malloc.c:4996
#4  0x7fa0e1479696 in _int_free (av=, p=, 
have_lock=0) at malloc.c:3840
#5  0x7fa0e190eb42 in MVM_interp_run (tc=0x5e09, tc@entry=0x43b72e0, 
initial_invoke=0x0, invoke_data=0x6, invoke_data@entry=0x43dfde0)
at src/core/interp.c:1601
#6  0x7fa0e19238de in start_thread (data=0x43dfde0) at src/core/threads.c:77
#7  0x7fa0e19ea267 in uv.thread_start () from 
//home/rlemmen/perl6env/rakudobrew/moar-nom/nqp/MoarVM/../../install/lib/libmoar.so
#8  0x7fa0e0eea0a4 in start_thread (arg=0x7fa0ddd36700) at 
pthread_create.c:309
#9  0x7fa0e14e887d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

(perhaps)interestingly this program also hangs for a second or so every now and 
then

please let me know how I can help debug this!

regards  robert