On 07/24 01:25, Eric Wong wrote:
> Jeremy Evans <[email protected]> wrote:
> > Running with GC.stress didn't catch the error for me. But I'm using a
> > fairly old compiler (GCC 4.2.1, the OpenBSD default), so this may be
> > something that only shows up on a newer compiler that does more
> > optimizations.
>
> Pere: just curious if you've had a chance to test my patch for
> sequel_pg from Jeremy's latest sequel_pg.git
>
> In any case, I'm certain my patch fixes a bug which manifests
> in a compiler-dependent manner; but here could always be other
> bugs in a similar vein. Thanks.
I can't get it to crash with sequel_pg 1.7.0 when compiled using clang
4.0.0 either. I even tried to build a special program designed to
trigger the crash.
Compiler used:
$ cc -v
OpenBSD clang version 4.0.0 (tags/RELEASE_400/final) (based on LLVM 4.0.0)
Target: amd64-unknown-openbsd6.1
Thread model: posix
InstalledDir: /usr/bin
Program used:
require 'sequel'
DB = Sequel.postgres(:test=>false)
DB.extension :pg_array
# pg_array.txt contains ([[1] * 100] * 100) in PostgreSQL array format
t = File.read('pg_array.txt')
dot = '.'
trap(:HUP){}
Thread.new do
while true
sleep 1
Process.kill(:HUP, $$)
end
end
GC.stress = true
(0..2).map do
Thread.new do
i = 0
pr = lambda{|v| print dot if ((i+=1) % 100) == 0; "#{v}#{v}"}
while true
print 'L'
Sequel::Postgres.parse_pg_array(t.dup, pr)
end
end
end.map(&:join)
Pere, can you test this program and see if it crashes in your
environment? If not, can you put together a reproducible example that
does crash in your environment?
Thanks,
Jeremy
--
unsubscribe: [email protected]
archive: https://bogomips.org/unicorn-public/