Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[BUG] Memory accumulation when using load_image in a loop

Offen
#365 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
30/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
rust
Bereich
computer-vision

Rechercherichtung

Beginne mit der Ausführung der bereitgestellten Schleife in src/main.rs:6 und untersuche den load_image-Wrapper in src/image/mod.rs:317 zusammen mit dem gemeldeten nativen af_load_image-Pfad. Verfolge, ob wiederholtes Laden von Bildern Gerätespeicher zurückhält, und ermittle das relevante Bereinigungs- oder Besitzverhalten. Als erledigt gilt die Aufgabe, wenn die Reproduktion nicht mehr Speicher anhäuft, bis ein Out-of-Memory-Fehler auftritt, und ein Regressionstest für wiederholtes Laden vorhanden ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Bug

The following program crashed. But why?

use arrayfire::*;

fn main() {
    let mut y =constant!(0 as u8;1);
    for i in 0..1000 {
        let x = load_image::<u8>("2dzs/robot_2dz.png".to_string(), true);
        let z = or(&x, &y, true);
        y = z.copy();
        println!("i={}", i);
    }
    println!("max(y)={:#?}", max_all(&y));
}

i=0
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
i=10
i=11
i=12
i=13
i=14
i=15
i=16
i=17
i=18
i=19
i=20
i=21
i=22
i=23
i=24
i=25
i=26
i=27
i=28
i=29
i=30
i=31
i=32
i=33
i=34
i=35
i=36
i=37
i=38
i=39
i=40
i=41
i=42
i=43
i=44
i=45
i=46
i=47
i=48
i=49
i=50
i=51
thread 'main' panicked at 'Error message: System or Device ran out of memory
Last error: In function af_load_image
In file src/api/c/imageio.cpp:393


 0# 0x00007F4FC1A299AF in /opt/arrayfire/lib/libafcuda.so.3
 1# 0x0000560F6F590AFF in target/debug/crash
 2# 0x0000560F6F590099 in target/debug/crash
 3# 0x0000560F6F5903AB in target/debug/crash
 4# 0x0000560F6F59031E in target/debug/crash
 5# 0x0000560F6F58FC41 in target/debug/crash
 6# 0x0000560F6F5A707F in target/debug/crash
 7# 0x0000560F6F58FC10 in target/debug/crash
 8# 0x0000560F6F5902EC in target/debug/crash
 9# 0x00007F4FFB823510 in /lib/x86_64-linux-gnu/libc.so.6
10# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
11# 0x0000560F6F58FB15 in target/debug/crash
', /home/joe/.cargo/registry/src/mirrors.ustc.edu.cn-12df342d903acd47/arrayfire-3.8.0/src/core/error.rs:37:14
stack backtrace:
   0: rust_begin_unwind
             at /rustc/c07a8b4e09f356c7468b69c50cac7fc5b5000b8a/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/c07a8b4e09f356c7468b69c50cac7fc5b5000b8a/library/core/src/panicking.rs:142:14
   2: arrayfire::core::error::handle_error_general
             at /home/joe/.cargo/registry/src/mirrors.ustc.edu.cn-12df342d903acd47/arrayfire-3.8.0/src/core/error.rs:37:14
   3: arrayfire::core::error::Callback::call
             at /home/joe/.cargo/registry/src/mirrors.ustc.edu.cn-12df342d903acd47/arrayfire-3.8.0/src/core/error.rs:29:9
   4: arrayfire::core::error::HANDLE_ERROR
             at /home/joe/.cargo/registry/src/mirrors.ustc.edu.cn-12df342d903acd47/arrayfire-3.8.0/src/core/error.rs:95:5
   5: arrayfire::image::load_image
             at /home/joe/.cargo/registry/src/mirrors.ustc.edu.cn-12df342d903acd47/arrayfire-3.8.0/src/image/mod.rs:317:9
   6: crash::main
             at ./src/main.rs:6:17
   7: core::ops::function::FnOnce::call_once
             at /rustc/c07a8b4e09f356c7468b69c50cac7fc5b5000b8a/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Vorherrschende Sprache
Rust
Sterne
827
Forks
59
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus arrayfire/arrayfire-rust

Alle Issues in arrayfire/arrayfire-rust

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.