* func#0 @0
                         * 0: R1=ctx(off=0,imm=0) R10=fp0
                         * 0: (b7) r3 = 2                 ; R3_w=2
+                        *
+                        * Sometimes it's actually two lines below, e.g. when
+                        * searching for "6: R3_w=scalar(umax=255,var_off=(0x0; 0xff))":
+                        *   from 4 to 6: R0_w=pkt(off=8,r=8,imm=0) R1=ctx(off=0,imm=0) R2_w=pkt(off=0,r=8,imm=0) R3_w=pkt_end(off=0,imm=0) R10=fp0
+                        *   6: R0_w=pkt(off=8,r=8,imm=0) R1=ctx(off=0,imm=0) R2_w=pkt(off=0,r=8,imm=0) R3_w=pkt_end(off=0,imm=0) R10=fp0
+                        *   6: (71) r3 = *(u8 *)(r2 +0)           ; R2_w=pkt(off=0,r=8,imm=0) R3_w=scalar(umax=255,var_off=(0x0; 0xff))
                         */
-                       if (!strstr(line_ptr, m.match)) {
+                       while (!strstr(line_ptr, m.match)) {
                                cur_line = -1;
                                line_ptr = strtok(NULL, "\n");
-                               sscanf(line_ptr, "%u: ", &cur_line);
+                               sscanf(line_ptr ?: "", "%u: ", &cur_line);
+                               if (!line_ptr || cur_line != m.line)
+                                       break;
                        }
-                       if (cur_line != m.line || !line_ptr ||
-                           !strstr(line_ptr, m.match)) {
-                               printf("Failed to find match %u: %s\n",
-                                      m.line, m.match);
+                       if (cur_line != m.line || !line_ptr || !strstr(line_ptr, m.match)) {
+                               printf("Failed to find match %u: %s\n", m.line, m.match);
                                ret = 1;
                                printf("%s", bpf_vlog);
                                break;