Date: Ph.D. student, SWAT Lab · NC State University
mohsen@ncsu:~$ cat bio.txt
I’m a Ph.D. student in Computer Science at North Carolina State University, part of the
Software Analysis and Testing (SWAT) Lab, advised by Prof.
Marcelo d’Amorim.
I work on optimizing LLM agents, and build agentic, LLM-driven testing pipelines that generate
test programs, triage crashes and minimize reproducers - applied to LLVM, GCC and WebAssembly
runtimes, where they have surfaced 190+ bug reports across compilers, WebAssembly runtimes and
deep learning libraries.
Before my Ph.D.: five years in industry — software engineering and systems programming,
followed by security engineering.
192bug reportsacross compilers, WebAssembly runtimes, and deep learning libraries
Clang / LLVM
Clang front end, LLVM middle and back end
75
#173921llvm-projectclang trunk: unreachable "Unexpected placeholder builtin type!" in CodeGenTypes::ConvertType during codegen of GNU st…
#173920llvm-projectclang trunk: unreachable "Type not integer, floating, or complex" in getAbsoluteValueKind during Sema check of labs()…
#173919llvm-projectclang trunk: assertion in StringLiteral::getString() during constexpr eval of __builtin_nan (or similar) with wide st…
#173918llvm-projectclang trunk: assertion "E->isPRValue() && E->getType()->isIntegralOrEnumerationType()" in EvaluateIntegerOrLValue dur…
#173917llvm-projectclang trunk: assertion failed in cast during codegen of inline asm with x86 flag output constraints (=@c…
#173916llvm-projectclang trunk: assertion "isPRValue() && isRealFloatingType()" in EvaluateFloat during constexpr eval of bitwise NOT on…
#173915llvm-projectclang trunk: assertion "Cannot retrieve a NULL type pointer" in QualType::getNonReferenceType during constexpr eval o…
#173914llvm-projectclang trunk: assertion "isPRValue()" in Expr::ClassifyImpl during Sema of malformed function parameter default argume…
#173911llvm-projectclang trunk: assertion "Invalid scalar expression to emit" in EmitScalarExpr during codegen of __builtin_preserve_acc…
#173910llvm-projectclang trunk: assertion "Initializer must be non-null" in InitializationSequence::InitializeFrom during Sema of global…
#173909llvm-projectclang trunk: unreachable "Fell off the end of a string-switch" in getFMVPriority during Sema of target_clones with ma…
#173907llvm-projectclang trunk (x86-64): assertion "bitwidth too small" in IntegerType::get during codegen of va_arg on struct with flex…
#173906llvm-projectclang trunk: assertion "isPRValue()" in Expr::ClassifyImpl during Sema of __builtin_dump_struct on struct containing…
#173904llvm-projectclang trunk: assertion "Can only have wide bit-fields in C++!" in ItaniumRecordLayoutBuilder when laying out bit-fiel…
#173903llvm-projectclang trunk: assertion "Cannot get layout of forward declarations!" in getASTRecordLayout during Sema of register asm…
#173901llvm-projectclang trunk: assertion "Cannot get layout of forward declarations!" in getASTRecordLayout during Sema of register asm…
#173900llvm-projectclang trunk: unreachable in InlineAsm constructor during codegen of inline asm with embedded \0 in constraint string
#173899llvm-projectclang trunk: assertion failed in cast during codegen of UINTR interrupt handler with malformed/duplicate…
#173894llvm-projectclang trunk: assertion failed in cast during Sema processing of attribute((packed)) on incomplete struc…
#173892llvm-projectclang trunk: unreachable in CodeGenTypes::ConvertType during codegen of GNU statement expression yielding void (via e…
#173891llvm-projectclang trunk: assertion "!isIncompleteType()" in Type::isConstantSizeType during codegen of static local with attribut…
#173890llvm-projectclang trunk: unreachable in getAbsoluteValueKind during Sema check of labs() on __m64 MMX vector type
#173889llvm-projectclang trunk: assertion in StringLiteral::getString() during constexpr eval of __builtin_nan with wide string literal…
#173888llvm-projectclang trunk: assertion "E->isPRValue() && E->getType()->isIntegralOrEnumerationType()" in EvaluateIntegerOrLValue dur…
#173886llvm-projectclang trunk: assertion "getType() == Other.getType()" in TypeLoc::initializeFullCopy during parsing of malformed nest…
#173884llvm-projectclang trunk: assertion "getType() == Other.getType()" in TypeLoc::initializeFullCopy during Sema of vector compound l…
#173877llvm-projectclang trunk: assertion "getType() == Other.getType()" in TypeLoc::initializeFullCopy during Sema of typedef with malf…
#173875llvm-projectclang trunk: assertion in LValue::addUnsizedArray during constexpr eval of dereference on incomplete array with malfo…
#173688llvm-projectClang trunk asserts: Expr::EvaluateAsInt called on value-dependent expression during CodeGen constant folding
#173686llvm-projectclang trunk: assertion "Too many bits for int64_t" in APSInt::getExtValue during constant eval of array subscript wit…
#173685llvm-projectclang trunk: assertion "Invalid CPUStr passed to CpuIs" during multi-version resolver emission for target_clones with…
#173684llvm-projectclang trunk: assertion "idx < size()" in SmallVector during Sema check of empty attribute((target_clones()))
#173683llvm-projectclang trunk: assertion "Null bytes are not allowed in names" in Value::setNameImpl when GNU asm function label contai…
#173682llvm-projectclang trunk: assertion "unsigned range includes negative?" in AnalyzeComparison during Sema of != with negation on un…
#173681llvm-projectclang trunk (x86): assertion "Operands with constraint "f" cannot overlap with defs" in X86 FP Stackifier for inline…
#173680llvm-projectclang trunk: assertion "No-op copy with multiple parts!" in getCopyToParts during DAG lowering of tied inline asm ope…
#173679llvm-projectclang trunk: assertion "isSimple()" in LValue::getPointer during codegen of inline asm operand on bit-field member
#173678llvm-projectUnreachable in ASTContext::mergeTypes during Sema of function redeclaration with VLA bounds dependent on nested struc…
#173676llvm-projectclang trunk: fatal error "Broken module found" in Verifier due to oversized struct with huge flexible array member
#173675llvm-projectclang trunk: assertion "Must have at least one constraint" in TargetLowering::ComputeConstraintToUse during backend D…
#173674llvm-projectclang trunk: assertion failed in cast during Sema address-of overloaded candidate with #pragma wea…
#173673llvm-projectclang trunk: assertion "Output operand lower bound is not zero" in EmitAsmStores during codegen of inline asm with mu…
#173672llvm-projectclang trunk: unreachable "Unknown unary operator lvalue!" in EmitUnaryOpLValue during codegen of postfix decrement on…
#173621llvm-projectClang trunk: assertion "Offset >= Size" in CGRecordLowering::insertPadding during record layout for global struct wit…
#173620llvm-projectClang trunk: unreachable/crash in SelectionDAGBuilder::visitInlineAsm → visitCallBr during backend lowering of asm go…
#173619llvm-projectClang trunk: unreachable/crash in Sema::BuildBinOp during parsing of enum initializer with | and __builtin_goacc_parl…
#173618llvm-projectClang trunk: assertion "Failed to convert memory constraint code to constraint id" in SelectionDAGBuilder::visitInlin…
#173617llvm-projectClang trunk: unreachable/crash in ASTContext::getCommonSugaredType during Sema of ternary with deref of const void an…
#173616llvm-projectClang trunk: assertion "No known constraint!" in AsmOperandInfo::isMatchingInputConstraint during backend DAG for opt…
#173615llvm-projectClang trunk (x86): assertion in TwoAddressInstructionImpl::processTiedPairs (duplicate tied reg) during backend lower…
#173614llvm-projectAssertion "unsigned range includes negative?" in AnalyzeComparison during Sema of vector comparison with mismatched s…
#173613llvm-projectUnreachable/crash in ComplexExprEvaluator::VisitCastExpr / VisitUnaryOperator during overflow check/eval of increment…
#173611llvm-projectClang failed to parse constraints in InlineAsm for invalid input constraint "#0" in asm stmt
#173610llvm-projectAssertion "should not emit an unevaluated operand" in EmitDeclRefLValue for DeclRef in statement expr VLA inside sizeof
#173609llvm-projectclang trunk (x86): assertion in FollowCopyChain ("start of copy chain MUST be COPY") during SelectionDAG for asm goto…
#173608llvm-projectassertion "Function already has body?" in CodeGenFunction::StartFunction when emitting duplicate extern inline defini…
#173607llvm-projectSIGSEGV (no assertion) during parsing of function prototype with excessively macro-expanded parameters
#173604llvm-projectclang trunk (x86): assertion failed in cast when adding interrupt attributes to UINTR handler with array…
#173603llvm-projectclang trunk (x86): assertion "Getting frame offset for a dead object?" in MachineFrameInfo::getObjectOffset during Pr…
#173602llvm-projectAssertion !isStruct() in APValue::getStructField during eval of pre-increment on _Complex double struct member (varia…
#173601llvm-projectAssertion in LValue::addUnsizedArray (!isPointerType && !isArrayType) during constexpr eval of dereference on redecla…
#173599llvm-projectAssertion "Initializer access out of range!" in InitListExpr::getInit during Sema of scalar compound literal with nes…
#173597llvm-projectAssertion "Invalid cast!" in CastInst::Create / ScalarExprEmitter::VisitCastExpr when codegen vectorized long double…
#173595llvm-projectAssertion failure in IntegerType::get (bitwidth too large) during codegen of inline asm with large array operand and…
#170073llvm-projectclang trunk: crash in IRBuilder::CreateCast / ScalarExprEmitter::VisitCastExpr for vector long double comparison return
#170072llvm-projectclang trunk: crash in LValue::addUnsizedArray when returning from negative-sized array
#170062llvm-projectclang trunk crash : X86FrameLowering::getFrameIndexReference crash during prologue/epilogue insertion for alloca(-1)
#170060llvm-projectclang trunk: crash in checkAttributesAfterMerging with alias attribute and initializer
#170059llvm-projectclang trunk: crash in ComplexExprEvaluator::VisitUnaryOperator during constant-expression overflow check
#165465llvm-projectClang Crash: Assertion !isNull() failed in QualType::getCommonPtr during constant expression evaluation
#165463llvm-projectClang Crash: Assertion Value > 0 failed in llvm::Align::Align due to negative vector_size attribute
#165462llvm-projectClang Crash (SIGSEGV) in CodeGen with __attribute__((preserve_access_index)) on structure access
#165458llvm-projectClang Crash: Assertion NumBits <= MAX_INT_BITS failed in IntegerType::get with large ext_vector_type
#165452llvm-projectLLVM IR Gen: Assertion Align != 0u failure in llvm::alignTo during Record Layout
#161710llvm-project`Wasmer's` execution leads to `LLVM Crash`
GCC
GNU Compiler Collection (Bugzilla)
54
PR122927gcc[13/14/15/16 Regression] ICE in fold_offsetof for __real of complex field inside packed struct array
PR122928gccGCC 16 trunk: ICE in c_type_tag when calling function with struct member va_list after duplicate va_arglist declaration
PR122929gccICE in expand_call when passing oversized struct argument on stack
PR122930gccGCC 16 trunk: ICE in output_operand_lossage for static uintptr_t initialized from label address differences
PR123424gcc[15 regression] ICE in comptypes_verify when handling a locally defined struct with a VLA member initialized from a m…
PR123425gccICE in gimplification when calling a function cast from an invalid void[ ] parameter declaration, leading to an error…
PR123426gccGCC trunk ICEs during final code generation when emitting static initializers involving arithmetic on label addresses…
PR123427gccGCC trunk hits “assembler name hash list corrupted” and ICEs in symtab_node::verify when two globals are forced to th…
PR123428gccGCC trunk ICEs in fold_offsetof when taking &__real / &__imag of a complex field inside a packed nested struct (p->b.…
PR123429gccGCC trunk segfaults while parsing a file-scope __builtin_c23_va_start
PR123430gccGCC trunk ICEs in operand_equal_p when folding a pointer difference expression formed by subtracting two foo().c arra…
PR123431gcc[13 Regression] ICE with __builtin_constant_p and __builtin_va_arg_pack usage in ranger
PR123432gccGCC trunk ICEs in finish_struct when a struct declares a vector float type (via __vector_size__) as a bit-field (floa…
PR123433gccGCC trunk ICEs during gimplification when processing varargs code involving non-constant-sized aggregate types.
PR123434gccGCC trunk ICEs during RTL expansion when passing very large aggregate arguments by value, after reporting an unimplem…
PR123435gcc[15 regression] ICE extern enum with qualifiers and int on the same decl
PR123436gccGCC trunk ICEs in the SIMD clone IPA pass when compiling a __attribute__((simd)) function with return type of typedef…
PR123437gcc[16 Regression] GCC trunk ICEs with divide on enum vector
PR123438gccGCC trunk ICEs during RTL expansion when compiling inline assembly with malformed or invalid output constraints.
PR123461gcc[16 Regression] ICE in mark_decl_used with some unsized array types
PR123462gccGCC trunk ICEs during RTL expansion when lowering inline assembly with invalid or malformed operand constraints.
PR123463gcc[15 Regression] ICE in comptypes with some GCC like code after errors
PR123464gccGCC trunk ICEs during code generation when processing invalid or unsupported inline assembly patterns.
PR123465gcc[13/14/15/16/17 Regression] ICE in handle_access_attribute after redeclaration error
PR123466gcc[13/14/15/16/17 Regression] ICE in get_unwidened after redeclared error
PR123467gcc[16/17 Regression] ICE in force_constant_size with VLA initialized in function type definition
#37766jax`jnp.linalg.svd`: subnormal singular values are returned as 0
#37765jax`jnp.linalg.eigvalsh` drops subnormal eigenvalues to zero; `jnp.linalg.det` returns 0 for matrices with subnormal det…
#37764jax`jax.scipy.special.i1e` and `jax.scipy.special.erfinv` return 0 for subnormal inputs
#37763jax`jax.scipy.special.digamma(0.0)` returns `nan` — should be `-inf`
#37762jaxSubnormal float32/bfloat16 inputs silently produce wrong results in `log`, `sqrt`, `rsqrt`, `log1p`, `lgamma` due to…
#37761jax`jnp.cbrt` gives wrong (negative!) result for denormal float32 inputs — same garbage value regardless of input
mohsen@ncsu:~$ ls skills/
Python
C / C++
Go
LLVM
GCC
WebAssembly
Fuzzing
Differential Testing
Static & Dynamic Analysis
LLMs & Agentic AI
SWE-bench Verified
JAX / PyTorch
Raleigh, NC
mohsen@ncsu:~$ cat research.md
*7c14b8d
Research
--- a/research.md +++ b/research.md
Predicting the Run, Not the Task: Failure Prediction for LLM Agents
Introduces a run-level failure-prediction framework for LLM agents, together with a
budget-allocation policy that attains 3.1× the throughput of the prevailing approach. Prior
evaluations rest on a metric dominated by between-task variation: it ranks tasks by relative
difficulty rather than estimating whether a given run will fail, and its discriminative power
degrades further as model capability increases.
Do Community-Authored Agent Skills Improve Automated Program Repair?
Presents a controlled evaluation of whether community-authored agent skills improve an LLM
coding agent’s ability to repair real defects. A containerized harness over SWE-bench Verified
isolates skill exposure as the sole treatment, against a matched baseline and with per-run
replication for variance estimation — converting a widely held assumption in the agent-tooling
community into a measurable result.
◆
Agentic Program Analysis
Employs large language models as reasoning components within program-analysis pipelines: proposing candidate programs, triaging failures and reducing crashes to minimal reproducers. Implemented over agentic frameworks such as LangChain and applied to Clang/LLVM and GCC, substituting agent-driven synthesis for hand-written test cases.
◇
Compiler Fuzzing
Coverage-guided and differential testing that synthesizes adversarial programs to expose crashes and miscompilations in Clang/LLVM and GCC, including an examination of what coverage guidance actually contributes to a compiler fuzzer and where its standard assumptions fail.
▣
WebAssembly Runtimes
Large-scale differential testing across Wasmtime, WAMR, WasmEdge and Wasmer: crash discovery, seed categorization and cross-implementation comparison. Has produced 190+ bug reports across compilers, WebAssembly runtimes and deep learning libraries, with fixes contributed upstream, alongside work on reusing existing regression suites to reach code paths new tests do not.
◈
Automated Software Testing
Reproducible, measurable test-generation pipelines — the infrastructure that converts a one-off bug hunt into a standing experiment. Spans metamorphic testing for game physics and controlled evaluation of coding agents on SWE-bench Verified.
mohsen@ncsu:~$ cat news.md
*e02da55
News
--- a/news.md +++ b/news.md
Left Behind, Not Forgotten: Reusing Regression Tests to Find Bugs in WebAssembly Runtimes was accepted with minor revision at IEEE TSE.
Three papers under review — two at ASE 2026 and one at IEEE TSE.
Adaptive Ensemble Learning for Software Defect Prediction appeared at ICCKE 2025.
Joined the SWAT Lab as a Research Assistant, working on compiler fuzzing and WebAssembly runtime analysis.
Started my Ph.D. in Computer Science at NC State University.
mohsen@ncsu:~$ cat publications.md
*1f6c9b3
Publications
--- a/publications.md +++ b/publications.md
Left Behind, Not Forgotten: Reusing Regression Tests to Find Bugs in WebAssembly Runtimes
I. Hayat, M. EsfandyariDoulabi, G. Merabishvili, M. d'Amorim
IEEE Transactions on Software Engineering (TSE) · 2027
Demystifying Coverage-Guided Compiler Fuzzing
M. EsfandyariDoulabi, I. Hayat, L. Liu, M. d'Amorim
IEEE/ACM International Conference on Software Engineering (ICSE) · 2027
Under review
MetaGlitch: Physics-Grounded Metamorphic Testing for Video Game Testing
G. Merabishvili, M. EsfandyariDoulabi, M. d'Amorim
IEEE/ACM International Conference on Software Engineering (ICSE) · 2027
Under review
Adaptive Ensemble Learning for Software Defect Prediction: A Dynamic Weighted Hybrid Model Using SVM, DT, and ANFIS-PSO
M. EsfandyariDoulabi, A. EsfandyariDoulabi, J. Khaligh
International Conference on Computer and Knowledge Engineering (ICCKE) · 2025
mohsen@ncsu:~$ cat experience.md
*b84e70a
Experience
--- a/experience.md +++ b/experience.md
Feb 2024 – Jul 2024
System Developer
Behin Afzar · Tehran, Iran
Engineered a firewall in C for IPv4, TCP/UDP, DNS and HTTP traffic, with a domain/CIDR rule
engine that compiles matches into iptables policies and emits structured audit trails for
compliance review.
cnetworkingdnshttpfirewalliptables
Jun 2021 – Feb 2024
Security Engineer
ShahrDI · Tehran, Iran
Automated vulnerability management end to end in Python and Bash including CVE tracking and
patch-compliance verification, with anomaly detection and audit-grade logging relied on in
regulatory review; led production hardening and ran secure-coding training for development teams.
securityautomationpythonhardeningcve
May 2020 – Jun 2021
SIEM Engineer
APK Group · Tehran, Iran
Detection engineering for a security operations center: authored SIEM use cases, IOC extraction
parsers and analyst dashboards in Python, plus correlation logic across heterogeneous log sources
that suppressed false positives and reconstructed complete attack chains.
siemdetectioniocmalwarepython
Apr 2019 – May 2020
Network Engineer
Shatel · Tehran, Iran
Managed Linux and Windows server estates and core network services (DNS, DHCP, VPN) for ISP
subscribers, with scripted diagnostics and repeatable incident playbooks that cut escalation
volume.
networkinglinuxdnsdhcpvpn
mohsen@ncsu:~$ cat academic.md
*5d3af19
Academic
--- a/academic.md +++ b/academic.md
2025–present
Research Assistant — SWAT Lab
North Carolina State University · Prof. Marcelo d'Amorim
Works on the reliability and efficiency of LLM agents and the systems they run on. Designs evaluation frameworks and benchmarking infrastructure that predict when agent runs fail and allocate compute accordingly, with controlled experiments over SWE-bench Verified in containerized harnesses. Builds automated testing pipelines — coverage-guided fuzzing, differential testing, and agentic, LLM-driven test generation — across compilers (Clang/LLVM, GCC), WebAssembly runtimes, and deep learning libraries, producing 190+ bug reports with fixes contributed upstream. Works in Python, C/C++, and Docker across large open-source codebases.
Fall 2026
CSC 474 — Network Security
North Carolina State University
Held office hours and graded assignments and projects covering network attacks, defences and applied cryptography.
Spring 2026
CSC 326 — Software Engineering
North Carolina State University
Supported team software-engineering projects: ran office hours, reviewed designs and graded iterative deliverables.
Spring 2025
CSC 574 — Computer & Network Security
North Carolina State University
Held office hours, graded assignments and projects, helped students debug their code, and clarified rubric expectations.
Fall 2024
CSC 216 — Software Development Fundamentals
North Carolina State University
Ran labs and office hours, graded programming assignments, and supported students with object-oriented design, unit testing, Git workflows, and debugging.
2019–2022
Operating Systems · Artificial Intelligence · Internet Engineering
Azad University
Taught and supported three undergraduate courses over three years, running sessions and grading for Operating Systems, Artificial Intelligence, and Internet Engineering. Voted best teaching assistant by students in 2022.