Last active
June 5, 2019 21:02
-
-
Save shreevari/f6f95e59004e1a9bc097211d7d9dbd8d to your computer and use it in GitHub Desktop.
The following implementation runs into segmentation faults.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(gdb) backtrace | |
#0 <core::slice::Iter<T> as core::iter::traits::iterator::Iterator>::fold (init=1240900, f=<optimized out>, self=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/slice/mod.rs:3150 | |
#1 <core::iter::adapters::flatten::FlattenCompat<I,U> as core::iter::traits::iterator::Iterator>::fold::{{closure}} (acc=1240900, | |
iter=...) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/flatten.rs:271 | |
#2 core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (self=<optimized out>, args=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/ops/function.rs:269 | |
#3 core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut (self=<optimized out>, args=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/ops/function.rs:269 | |
#4 <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold::{{closure}} (acc=1240900, elt=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/mod.rs:587 | |
#5 core::iter::traits::iterator::Iterator::fold::{{closure}} (acc=1240900, x=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/traits/iterator.rs:1684 | |
#6 core::iter::traits::iterator::Iterator::try_fold (self=<optimized out>, init=1240900, f=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/traits/iterator.rs:1572 | |
#7 core::iter::traits::iterator::Iterator::fold (self=..., init=1240900, f=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/traits/iterator.rs:1684 | |
#8 <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (self=..., init=1240900, g=<optimized out>) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/mod.rs:587 | |
#9 <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::fold (self=..., init=<optimized out>, | |
f=<optimized out>) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/chain.rs:112 | |
#10 <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::fold (self=..., init=<optimized out>, f=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/chain.rs:106 | |
#11 0x00005555556009a7 in <core::iter::adapters::flatten::FlattenCompat<I,U> as core::iter::traits::iterator::Iterator>::fold ( | |
init=1240900, self=..., fold=...) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/flatten.rs:268 | |
#12 <core::iter::adapters::flatten::Flatten<I> as core::iter::traits::iterator::Iterator>::fold (init=1240900, self=..., fold=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/flatten.rs:159 | |
#13 <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (self=..., init=1240900, g=<optimized out>) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/adapters/mod.rs:587 | |
#14 0x000055555562f06a in <i32 as core::iter::traits::accum::Sum>::sum (iter=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/traits/accum.rs:47 | |
#15 core::iter::traits::iterator::Iterator::sum (self=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/iter/traits/iterator.rs:2315 | |
#16 rav1e::encoder::FrameState<T>::compute_activity_mask (self=0x7ffff7a78c60) at /home/shreevari/repos/gsoc/rav1e/src/encoder.rs:404 | |
#17 0x00005555556174ca in rav1e::api::ContextInner<T>::receive_packet (self=<optimized out>) | |
at /home/shreevari/repos/gsoc/rav1e/src/api.rs:878 | |
--Type <RET> for more, q to quit, c to continue without paging--c | |
#18 0x00005555555f6cef in rav1e::api::Context<T>::receive_packet::{{closure}} () at /home/shreevari/repos/gsoc/rav1e/src/api.rs:608 | |
#19 rayon_core::thread_pool::ThreadPool::install::{{closure}} () at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/thread_pool/mod.rs:124 | |
#20 rayon_core::registry::Registry::in_worker_cold::{{closure}} (injected=true) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/registry.rs:356 | |
#21 <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::{{closure}} () at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/job.rs:113 | |
#22 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panic.rs:309 | |
#23 std::panicking::try::do_call (data=0x7ffff7a7d8e8 "0\313\377\377\377\177\000") at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panicking.rs:293 | |
#24 0x000055555581c61a in __rust_maybe_catch_panic () at src/libpanic_unwind/lib.rs:87 | |
#25 0x00005555555edf22 in std::panicking::try (f=...) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panicking.rs:272 | |
#26 std::panic::catch_unwind (f=...) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panic.rs:388 | |
#27 rayon_core::unwind::halt_unwinding (func=...) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/unwind.rs:18 | |
#28 <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute (this=0x7fffffffc6c0) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/job.rs:113 | |
#29 0x0000555555706bcf in rayon_core::job::JobRef::execute (self=<optimized out>) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/job.rs:60 | |
#30 rayon_core::registry::WorkerThread::execute (self=<optimized out>, job=...) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/registry.rs:584 | |
#31 rayon_core::registry::WorkerThread::wait_until_cold (self=0x7ffff7a7dbc0, latch=0x55555597bf90) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/registry.rs:568 | |
#32 0x00005555557076af in rayon_core::registry::WorkerThread::wait_until (self=<optimized out>, latch=0x55555597bf90) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/registry.rs:544 | |
#33 rayon_core::registry::main_loop (worker=..., registry=..., index=<optimized out>, breadth_first=false) at /home/shreevari/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.4.1/src/registry.rs:666 | |
#34 0x0000555555707f4c in std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} () at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/thread/mod.rs:470 | |
#35 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panic.rs:309 | |
#36 std::panicking::try::do_call (data=<optimized out>) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panicking.rs:293 | |
#37 0x000055555581c61a in __rust_maybe_catch_panic () at src/libpanic_unwind/lib.rs:87 | |
#38 0x000055555570bae0 in std::panicking::try (f=...) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panicking.rs:272 | |
#39 std::panic::catch_unwind (f=...) at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/panic.rs:388 | |
#40 std::thread::Builder::spawn_unchecked::{{closure}} () at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libstd/thread/mod.rs:469 | |
#41 core::ops::function::FnOnce::call_once{{vtable-shim}} () at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/ops/function.rs:231 | |
#42 0x000055555580d3df in call_once<(),FnBox<()>> () at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702 | |
#43 0x000055555581ba90 in call_once<(),alloc::boxed::Box<FnBox<()>>> () at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702 | |
#44 start_thread () at src/libstd/sys_common/thread.rs:14 | |
#45 thread_start () at src/libstd/sys/unix/thread.rs:80 | |
#46 0x00007ffff7f895a2 in start_thread () from /lib64/libpthread.so.0 | |
#47 0x00007ffff7e9c163 in clone () from /lib64/libc.so.6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub fn compute_activity_mask(&mut self) { | |
let csf: [[f32; 8]; 8] = [ | |
[1.608443, 2.339554, 2.573509, 1.608443, 1.072295, 0.643377, 0.504610, 0.421887], | |
[2.144591, 2.144591, 1.838221, 1.354478, 0.989811, 0.443708, 0.428918, 0.467911], | |
[1.838221, 1.979622, 1.608443, 1.072295, 0.643377, 0.451493, 0.372972, 0.459555], | |
[1.838221, 1.513829, 1.169777, 0.887417, 0.504610, 0.295806, 0.321689, 0.415082], | |
[1.429727, 1.169777, 0.695543, 0.459555, 0.378457, 0.236102, 0.249855, 0.334222], | |
[1.072295, 0.735288, 0.467911, 0.402111, 0.317717, 0.247453, 0.227744, 0.279729], | |
[0.525206, 0.402111, 0.329937, 0.295806, 0.249855, 0.212687, 0.214459, 0.254803], | |
[0.357432, 0.279729, 0.270896, 0.262603, 0.229778, 0.257351, 0.249855, 0.259950]]; | |
let luma_plane = &self.input.planes[0]; | |
let PlaneConfig { width, height, .. } = luma_plane.cfg; | |
let activity_plane = &mut self.activity_mask; | |
let PlaneConfig { xdec, ydec, .. } = activity_plane.cfg; | |
let activity_mask: &mut [u16] = &mut *activity_plane.data; | |
assert!(xdec == 3 && ydec == 3); | |
let aligned_luma = Rect { | |
x: 0_isize, | |
y: 0_isize, | |
width: (width >> xdec) << xdec, | |
height: (height >> ydec) << ydec, | |
}; | |
let luma = PlaneRegion::new(luma_plane, aligned_luma); | |
for x in 0 .. width >> xdec { | |
for y in 0 .. height >> ydec { | |
let block_rect = Area::Rect{ | |
x: (x << xdec) as isize, | |
y: (y << ydec) as isize, | |
width: 8, | |
height: 8, | |
}; | |
let block = luma.subregion(block_rect); | |
let mut mean: i32 = block.rows_iter().flatten().map(|&val| {let int: i32 = CastFromPrimitive::cast_from(val); int}).sum(); | |
mean = mean >> (xdec + ydec); | |
let deviation: Vec<i16> = block.rows_iter().flatten().map(|&pix| {let pix_int: i16 = CastFromPrimitive::cast_from(pix); pix_int - mean as i16}).collect(); | |
let tx_type = TxType::DCT_DCT; | |
let tx_size = TxSize::TX_8X8; | |
let mut tx_deviation = [0_i32; 64]; | |
forward_transform(&deviation, &mut tx_deviation, tx_size.width(), tx_size, tx_type, self.bit_depth); | |
tx_deviation.iter_mut().zip(csf.iter().flatten()).for_each(|(d, &csf)| *d = (*d as f32 * csf).floor() as i32); | |
let mut cs_dev = Plane::<u16>::new(8, 8, 0, 0, 0, 0); | |
let mut cs_deviation = PlaneRegionMut::new( | |
&mut cs_dev, | |
Rect{x: 0, y: 0, width: 8, height: 8}); | |
inverse_transform_add(&tx_deviation, &mut cs_deviation, tx_size, tx_type, self.bit_depth); | |
let act: f32 = cs_deviation.rows_iter().flatten().map(|dev| *dev as f32 * *dev as f32).sum(); | |
activity_mask[y * width>>xdec + x] = (act / 64_f32) as u16; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Thread debugging using libthread_db enabled] | |
Using host libthread_db library "/lib64/libthread_db.so.1". | |
warning: Loadable section ".note.gnu.property" outside of ELF segments | |
1388x926 @ 24/1 fps | |
[New Thread 0x7ffff7a7e700 (LWP 13252)] | |
[New Thread 0x7ffff787d700 (LWP 13253)] | |
Thread 2 "rav1e" received signal SIGSEGV, Segmentation fault. | |
[Switching to Thread 0x7ffff7a7e700 (LWP 13252)] | |
<core::slice::Iter<T> as core::iter::traits::iterator::Iterator>::fold (init=1240900, f=<optimized out>, self=...) | |
at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/slice/mod.rs:3150 | |
3150 /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/libcore/slice/mod.rs: No such file or directory. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
src/encoder.rs: 404 corresponds to line 40 in the file attached.