Skip to content

Mismatch between full and field insensitive alias analysis #880

@hernanponcedeleon

Description

@hernanponcedeleon

With the full alias analysis, we return PASS for this SVCOMP benchmark (the expected result is FALSE according to the competition).

However, there are a bunch of warnings coming from the analysis

[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 101:r12 = load(*bv64 101:r11) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5791
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6369 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933 -> is_device_dma_capable @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5865
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 191:r47 = load(*bv64 192:r21 + bv64(8)) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5914
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_free_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6413
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 90:r37 = load(*bv64 91:r21) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5871
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6359 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 98:r48 = load(*bv64 99:r21) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5879
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6369 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 98:r37 = load(*bv64 99:r21) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5871
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6369 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 201:r47 = load(*bv64 202:r21 + bv64(8)) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5914
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_free_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6418
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 201:r53 = load(*bv64 202:r21 + bv64(8)) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5918
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_free_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6418
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 93:r12 = load(*bv64 93:r11) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5791
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6359 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933 -> is_device_dma_capable @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5865
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 90:r48 = load(*bv64 91:r21) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5879
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6359 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933
[09.05.2025] 19:53:25 �[33m[WARN]�[m InclusionBasedPointerAnalysis.postProcess - empty pointer set for bv64 191:r53 = load(*bv64 192:r21 + bv64(8)) @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5918
Context: T1:ldv_insmod_4 -> ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> Iter#2 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_free_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6413

so I tried to run the field insensitive one. Now we report (it takes ~17min) an invalid function pointer

===== Program specification violation found =====
        E479:   ldv_insmod_w83977af_init_4_6 @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7807 -> w83977af_init @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#7840 -> w83977af_open @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6249 -> dma_zalloc_coherent @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#6359 -> dma_alloc_attrs @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5933 -> @linux-3.14--drivers--net--irda--w83977af_ir.ko.cil.i#5879: Invalid function pointer
=================================================

Even in this case we have several warning related to desvirtualisations

[09.05.2025] 19:09:40 [WARN] NaiveDevirtualisation.devirtualise - Cannot resolve dynamic call "call bv64 r53(bv64 r54, bv32 r55, bv64 r56, bv64 r57, bv64 r58)", no matching functions found.
[09.05.2025] 19:09:40 [WARN] NaiveDevirtualisation.devirtualise - Cannot resolve dynamic call "bv64 r54 <- call bv64 r48(bv64 r49, bv32 r50, bv64 r51, bv32 r52, bv64 r53)", no matching functions found.
[09.05.2025] 19:09:40 [WARN] NaiveDevirtualisation.devirtualise - Cannot resolve dynamic call "call bv64 r1()", no matching functions found.

but the fact that both analysis result in different results shows that we have a problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions