blevesearch / bleve

A modern text/numeric/geo-spatial/vector indexing library for go
Apache License 2.0
10.1k stars 686 forks source link

Crashed on a linux-arm64 device #1665

Open fy0 opened 2 years ago

fy0 commented 2 years ago

Environment:

# uname -a
Linux orangepilite2 5.10.60-sunxi64 #21.08.1 SMP Wed Aug 25 18:29:57 UTC 2021 aarch64 GNU/Linux

OrangePi is a device like RaspberryPi

Demo code:

package main

import (
    "fmt"
    "github.com/blevesearch/bleve/v2"
    "os"
)

func main() {
    INDEX_DIR := "bleve_idx"
    os.RemoveAll(INDEX_DIR)

    mapping := bleve.NewIndexMapping()
    defer os.RemoveAll(INDEX_DIR)

    index, err := bleve.New(INDEX_DIR, mapping)
    if err != nil {
        panic(err)
    }

    fmt.Println("111111")
    if err := index.Index("1", "AAAAAAAA, a humble vaudevillian veteran cast vicariously as both victim and villain vicissitudes of fate."); err != nil {
        fmt.Println("22222222")
        panic(err)
    }

    index.Close()
}

program crashed after 11111 were printed. Crash info:

# ./program
111111
unexpected fault address 0x6d69746369781c
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x6d69746369781c pc=0x1c1054]

goroutine 1 [running]:
runtime.throw({0x4de9d4, 0x5})
        runtime/panic.go:1198 +0x54 fp=0x400041d610 sp=0x400041d5e0 pc=0x461d4
runtime.sigpanic()
        runtime/signal_unix.go:742 +0x1e4 fp=0x400041d650 sp=0x400041d610 pc=0x5ddf4
github.com/golang/snappy.encodeBlock({0x4000414001, 0x99, 0x99}, {0x400005e150, 0x69, 0x70})
        github.com/golang/snappy@v0.0.2/encode_arm64.s:666 +0x354 fp=0x40004256f0 sp=0x400041d660 pc=0x1c1054
github.com/golang/snappy.Encode({0x0, 0x0, 0x0}, {0x400005e150, 0x69, 0x70})
        github.com/golang/snappy@v0.0.2/encode.go:39 +0x1f0 fp=0x4000425780 sp=0x40004256f0 pc=0x1c0610
github.com/blevesearch/zapx/v15.(*interim).writeStoredFields(0x4000406000)
        github.com/blevesearch/zapx/v15@v15.3.3/new.go:561 +0x428 fp=0x4000425a10 sp=0x4000425780 pc=0x224d18
github.com/blevesearch/zapx/v15.(*interim).convert(0x4000406000)
        github.com/blevesearch/zapx/v15@v15.3.3/new.go:256 +0x1a4 fp=0x4000425ae0 sp=0x4000425a10 pc=0x222b94
github.com/blevesearch/zapx/v15.(*ZapPlugin).newWithChunkMode(0x8df880, {0x400001e130, 0x1, 0x1}, 0x402)
        github.com/blevesearch/zapx/v15@v15.3.3/new.go:71 +0x194 fp=0x4000425bb0 sp=0x4000425ae0 pc=0x2224e4
github.com/blevesearch/zapx/v15.(*ZapPlugin).New(0x8df880, {0x400001e130, 0x1, 0x1})
        github.com/blevesearch/zapx/v15@v15.3.3/new.go:46 +0x50 fp=0x4000425c10 sp=0x4000425bb0 pc=0x222310
github.com/blevesearch/bleve/v2/index/scorch.(*Scorch).Batch(0x4000100400, 0x400000c150)
        github.com/blevesearch/bleve/v2@v2.3.1/index/scorch/scorch.go:399 +0x510 fp=0x4000425de0 sp=0x4000425c10 pc=0x244b8
0
github.com/blevesearch/bleve/v2/index/scorch.(*Scorch).Update(0x4000100400, {0x5771f0, 0x4000078000})
        github.com/blevesearch/bleve/v2@v2.3.1/index/scorch/scorch.go:322 +0x118 fp=0x4000425e30 sp=0x4000425de0 pc=0x24451
8
github.com/blevesearch/bleve/v2.(*indexImpl).Index(0x40001b4460, {0x4de101, 0x1}, {0x447680, 0x564f00})
        github.com/blevesearch/bleve/v2@v2.3.1/index_impl.go:257 +0x238 fp=0x4000425ea0 sp=0x4000425e30 pc=0x3faf78
main.main()
        bleveTest/main.go:23 +0x174 fp=0x4000425f70 sp=0x4000425ea0 pc=0x404b94
runtime.main()
        runtime/proc.go:255 +0x284 fp=0x4000425fd0 sp=0x4000425f70 pc=0x48a64
runtime.goexit()
        runtime/asm_arm64.s:1133 +0x4 fp=0x4000425fd0 sp=0x4000425fd0 pc=0x778d4

goroutine 18 [select]:
github.com/blevesearch/bleve_index_api.AnalysisWorker({0x40002da840, 0x40002da8a0})
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:46 +0x78
created by github.com/blevesearch/bleve_index_api.NewAnalysisQueue
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:38 +0xe4

goroutine 19 [select]:
github.com/blevesearch/bleve_index_api.AnalysisWorker({0x40002da840, 0x40002da8a0})
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:46 +0x78
created by github.com/blevesearch/bleve_index_api.NewAnalysisQueue
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:38 +0xe4

goroutine 20 [select]:
github.com/blevesearch/bleve_index_api.AnalysisWorker({0x40002da840, 0x40002da8a0})
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:46 +0x78
created by github.com/blevesearch/bleve_index_api.NewAnalysisQueue
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:38 +0xe4

goroutine 21 [select]:
github.com/blevesearch/bleve_index_api.AnalysisWorker({0x40002da840, 0x40002da8a0})
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:46 +0x78
created by github.com/blevesearch/bleve_index_api.NewAnalysisQueue
        github.com/blevesearch/bleve_index_api@v1.0.1/analysis.go:38 +0xe4

goroutine 22 [select]:
github.com/blevesearch/bleve/v2/index/scorch.(*Scorch).introducerLoop(0x4000100400)
        github.com/blevesearch/bleve/v2@v2.3.1/index/scorch/introducer.go:66 +0x148
created by github.com/blevesearch/bleve/v2/index/scorch.(*Scorch).Open
        github.com/blevesearch/bleve/v2@v2.3.1/index/scorch/scorch.go:190 +0x78

goroutine 23 [select]:
github.com/blevesearch/bleve/v2/index/scorch.(*Scorch).persisterLoop(0x4000100400)
        github.com/blevesearch/bleve/v2@v2.3.1/index/scorch/persister.go:225 +0xb94
created by github.com/blevesearch/bleve/v2/index/scorch.(*Scorch).Open
        github.com/blevesearch/bleve/v2@v2.3.1/index/scorch/scorch.go:194 +0xc0

Cross compiled on windows. Linux amd64 version works well.

alexellis commented 2 years ago

Hi @fy0 did you find a workaround for this yet or a different compatible library for text search/indexing using Go?