Thank you very much for updating and giving your reason. I do in fact use Thread::Conveyor and had never run in to the segfault issue.
Upon investigation, I only get the segfault when I set the stack size globally (when I load the threads module or via threads->set_stack_size(). I have no problems if I set the stack size at thread creation time (below). This explains why I have never run into trouble. Clearly, there is some problem with Thread::Conveyor and you have convinced me that there might be some reason to avoid it. Determining whether the problem is fixable is probably beyond me.
#! perl -slw
# This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi
use strict;
use threads;
use Thread::Conveyor;
my $belt = Thread::Conveyor->new( {
maxboxes => 50,
minboxes => 25,
optimize => 'memory', # or 'cpu'
});
threads->new(sub {
print while defined( $_ = $belt->take );
},
{ stack_size => 4096 })->detach;
$belt->put( $_ ) for 1 .. 10;
$belt->put( undef );
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|